パイプを介してIPを取得する方法は?

パイプを介してIPを取得する方法は?

私はすべてのローカル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}"

このアプローチの最大の利点は、デバッグがより簡単であることです。ただし、マイレージは異なる場合があります。

おすすめ記事