私はすべてのローカルIPコレクションを使用し、特定のarp-scan
システムIPをMacアドレスにフィルタリングし、SSHを使用してその特定のシステムに自動的に接続します。パイプを介して次のコマンドを試しました。
sudo arp-scan --localnet|grep 10|cut -c1-12|xargs ssh myuser@
ここの1cはgrep
私のシステムのMACアドレスの開始文字です。
次のエラーを返します。
SSH:ホスト名を解決できませんでした:不明な名前またはサービス
xargs: ssh: 中断状態で終了しました。
ベストアンサー1
使用パラメータ文字列フラグの置き換え
xargsの代替文字列フラグを使用する必要があります。たとえば、パイプラインの残りの部分が期待どおりに機能しているとします。
sudo arp-scan --localnet | grep 10 | cut -c1-12 | xargs -I{} -n1 ssh -tt myuser@{}
両方を参照してくださいパラメータそしてSSHこのコマンドが正しく機能するには、いくつかの追加フラグが必要です。特に注目すべき点は、SSHクライアントがパイプから標準入力を受け取るときにリモートホスト-tt
にPTY割り当てを強制するためにフラグをSSHに渡す必要があることです。
コマンド置換とシェル変数の使用
あるいは、正確に単一のIPアドレスをキャプチャする場合は、結果をシェル変数にキャプチャし、正しいホストでSSHを呼び出すだけです。たとえば、Bashシェルを使用すると、次のようになります。
host_ip=$(sudo arp-scan --localnet | grep 10 | cut -c1-12)
ssh "myuser@${host_ip}"
このアプローチの最大の利点は、デバッグがより簡単であることです。ただし、マイレージは異なる場合があります。