SSHを2回実行してコマンドを実行すると、文字がエスケープされますか?

SSHを2回実行してコマンドを実行すると、文字がエスケープされますか?

端末で次のコマンドを実行すると、希望の出力を取得できます。

top -bn 1 | grep "^ " | awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); }' | head -n 6

端末で次のコマンドを実行して SSH を 2 回実行し、ホスト名を取得できます。

ssh 192.168.5.209 "ssh 192.168.5.210 exec \"hostname\""

209はポータルのように動作するため、209から210までのSSHのみが可能です。しかし、問題は "hostname"を上記で書いたトップレベルのコマンドに置き換える方法です。特殊文字が多すぎます。

PHPで実行するスクリプトを作成しています。

ベストアンサー1

grep、awk、head を組み合わせてローカルで実行できます。

 ssh 192.168.5.209 "ssh 192.168.5.210 top -bn 1 " |
 awk '/^ / { printf("%-8s %-8s %-8s %-8s %-8s %-8s %-8s\n", $1, $2, $9, $10, $6, $11, $12); c++ ; if (c==6) exit ;} 

どこ

  • /^ /スペースで始まる行の検索
  • c++ ; if (c==6) exit ;Awkは6行を印刷した後に終了します。

おすすめ記事