【问题标题】:'grep' not recognized over ssh'grep' 无法通过 ssh 识别
【发布时间】:2021-04-18 11:08:18
【问题描述】:

我正在尝试像这样远程关闭我的应用程序:

ssh pi@192.168.0.227 "kill $(ps aux | grep '[M]yApp' | awk '{print $2}')"

失败并提示:

grep :术语“grep”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。

如果我先通过 SSH 登录然后执行命令,它可以工作,但我需要它是单行的。我已将/etc/ssh/sshd_config 变量PermitUserEnvironment 设置为yes,并尝试使用grep 的完整路径(/bin/grep),甚至删除了管道周围的空格(这些都是与我类似的问题的答案)但没有允许我传递命令。我错过了什么?

【问题讨论】:

    标签: bash ssh openssl


    【解决方案1】:

    字符串在传递给其他主机之前由本地 shell 扩展。由于它是一个双引号字符串,$() 中的命令在您的本地主机上运行。 将此类命令传递给远程主机的最简单方法是使用“引用”here document

    ssh pi@192.168.0.227 <<'EOF'
    kill $(ps aux | grep '[M]yApp' | awk '{print $2}')"
    EOF
    

    类似:How have both local and remote variable inside an SSH command

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2022-01-14
      • 2020-09-29
      • 1970-01-01
      • 2014-10-16
      • 2020-06-20
      • 2011-10-12
      相关资源
      最近更新 更多