带参数的远程ssh命令

时间:2018-01-10 08:52:39

标签: bash awk ssh remote-access remote-server

我知道我可以使用ssh -t login @ machine"命令"从另一台机器远程运行命令,但是我很难运行更复杂的命令:

 watch  "ps aux  | awk '{print $1}' | grep php-fpm | wc -l"

我正尝试使用不同类型的引号,但是虽然看起来命令似乎正在触发,但它显示的错误如下:

  

awk:cmd。 line:1:{print awk:cmd。行:1:
  ^意外换行或结束
  字符串

1 个答案:

答案 0 :(得分:4)

事情是$在传递给ssh命令之前由shell扩展。你需要通过转发它来剥夺它的特殊含义 local ,然后再将它传递给ssh

ssh -t login@machine watch "ps aux | awk '{print \$1}' | grep php-fpm | wc -l"

您看到的错误是因为当shell尝试展开$1时,它找不到它的值并留下一个空字符串,导致传递给awk的参数数量不正确。

此外,您可以使用简单的逻辑替换包含awkgrep的shell管道

ssh -t login@machine watch "ps aux | awk '\$1 == \"php-fpm\"{count++}END{print count}'