带参数的远程 ssh 命令
Remote ssh command with arguments
我知道我可以 运行 使用 ssh -t login@machine "command" 从另一台机器远程命令,但是我正在努力 运行 像这样更复杂的命令:
watch "ps aux | awk '{print }' | grep php-fpm | wc -l"
我正在尝试使用不同类型的引号,但是尽管 watch 命令似乎在触发,但它显示的错误如下:
awk: cmd. line:1: {print awk: cmd. line:1:
^ unexpected newline or end
of string
问题是 $
在传递给 ssh
命令之前由 shell 扩展。您需要通过在将其传递给 ssh
as
之前将其转义来剥夺其在 locally 的特殊含义
ssh -t login@machine watch "ps aux | awk '{print $1}' | grep php-fpm | wc -l"
您看到的错误是因为当 shell 试图扩展 </code> 时它没有找到它的值并留下一个空字符串,这导致传递给 [= 的参数数量不正确16=].</p>
<p>您也可以用一个简单的逻辑</p>替换包含<code>awk
和grep
的shell管道
ssh -t login@machine watch "ps aux | awk '$1 == \"php-fpm\"{count++}END{print count}'
我知道我可以 运行 使用 ssh -t login@machine "command" 从另一台机器远程命令,但是我正在努力 运行 像这样更复杂的命令:
watch "ps aux | awk '{print }' | grep php-fpm | wc -l"
我正在尝试使用不同类型的引号,但是尽管 watch 命令似乎在触发,但它显示的错误如下:
awk: cmd. line:1: {print awk: cmd. line:1:
^ unexpected newline or end
of string
问题是 $
在传递给 ssh
命令之前由 shell 扩展。您需要通过在将其传递给 ssh
as
ssh -t login@machine watch "ps aux | awk '{print $1}' | grep php-fpm | wc -l"
您看到的错误是因为当 shell 试图扩展 </code> 时它没有找到它的值并留下一个空字符串,这导致传递给 [= 的参数数量不正确16=].</p>
<p>您也可以用一个简单的逻辑</p>替换包含<code>awk
和grep
的shell管道
ssh -t login@machine watch "ps aux | awk '$1 == \"php-fpm\"{count++}END{print count}'