Bash ';grep';无法通过ssh识别
我正试图远程关闭我的应用程序,如下所示:Bash ';grep';无法通过ssh识别,bash,ssh,openssl,Bash,Ssh,Openssl,我正试图远程关闭我的应用程序,如下所示: ssh pi@192.168.0.227 "kill $(ps aux | grep '[M]yApp' | awk '{print $2}')" 它失败并提示: grep:术语“grep”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 如果我先通过SSH登录,然后执行命令,它会工作,但我需要它是一行程序。我已经将/etc/ssh/sshd_configva
ssh pi@192.168.0.227 "kill $(ps aux | grep '[M]yApp' | awk '{print $2}')"
它失败并提示:
grep:术语“grep”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试
如果我先通过SSH登录,然后执行命令,它会工作,但我需要它是一行程序。我已经将
/etc/ssh/sshd_config
variablePermitUserEnvironment
设置为yes
,并尝试使用grep的完整路径(/bin/grep
),甚至删除了管道周围的空格(这些都是与我类似的问题的答案),但没有任何东西允许我传递命令。我缺少什么?字符串在传递到另一个主机之前由本地shell展开。由于是双引号字符串,$()
中的命令在本地主机上运行。将此类命令传递给远程主机的最简单方法是使用“引号”:
sshpi@192.168.0.227
ssh pi@192.168.0.227 <<'EOF'
kill $(ps aux | grep '[M]yApp' | awk '{print $2}')"
EOF