代码之家  ›  专栏  ›  技术社区  ›  Dawid Adach

带参数的远程ssh命令[重复]

  •  4
  • Dawid Adach  · 技术社区  · 7 年前

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

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

    我尝试使用不同的引号,但尽管watch命令似乎正在启动,但它显示的错误如下:

    awk:命令。行:1:{打印awk:cmd。行:1:
    ^意外换行或结束
    字符串的数量

    1 回复  |  直到 7 年前
        1
  •  4
  •   Inian    7 年前

    问题是 $ 在传递给 ssh 命令你需要剥夺它的特殊意义 本地 在将其传递给 ssh

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

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

    您还可以替换包含 awk公司 grep 用一个简单的逻辑

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