SSH 两次并运行命令,转义字符?

SSH 两次并运行命令,转义字符?

我可以通过在终端上运行以下命令来获得所需的输出:

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 两次并通过在终端上运行以下命令来获取主机名:

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

209 充当类似门户的功能,因此我只能从 209 到 210 进行 SSH。但问题是如何用我上面编写的 top 命令替换“主机名”?特殊字符太多了。

我正在编写一个从 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 ;打印 6 行后将退出 awk。

相关内容