linux - 使用 SSH 的调用命令失败?

标签 linux bash shell ssh unzip

根据项目要求,我需要检查在远程机器上生成的 zip 文件的内容。整个事件是使用自动化框架套件完成的。这是用 shell 脚本编写的。我正在使用 ssh 命令执行上述事件,并使用 -l 和 -q 开关执行解压缩命令。但是这个命令失败了。并显示以下错误消息。

[SOMEUSER@MACHINE IP Function]$ ./TESTS.sh
    ssh SOMEUSER@MACHINE IP unzip -l -q SOME_PATH/20130409060734*.zip | grep -i XML  |wc -l
    unzip:  cannot find or open SOME_PATH/20130409060734*.zip, SOME_PATH/20130409060734*.zip.zip or SOME_PATH/20130409060734*.zip.ZIP.

    No zipfiles found.
    0

我手动编写的相同命令但工作正常。我真的不知道。为什么每当我通过 shell 脚本执行时都会失败。

[SOMEUSER@MACHINE IP Function]$ ssh SOMEUSER@MACHINE IP unzip -l -q SOME_PATH/20130409060734*.zip | grep -i XML  |wc -l
        2

请帮我解决这个问题。

提前致谢, 普里扬克·沙阿

最佳答案

当您从本地计算机运行该命令时,星号字符会在您的本地计算机上展开,然后再传递给您的远程 ssh 命令。所以你的命令期望在你的机器上找到 SOME_PATH/20130409060734*.zip 文件并将它们插入你的 ssh 命令以传递给另一台机器,而你(我假设)的意思是 SOME_PATH/20130409060734*.zip 文件远程机器。

为此,在 * 字符前加一个反斜杠 (\),看看它是否对您有帮助。在某些 shell 中,转义字符的定义可能不同,如果您是其中之一,则需要找到转义字符并改用该字符。此外,在传递给其他服务器的命令周围使用引号。在我看来,您的命令行应如下所示:

ssh SOMEUSER@MACHINE_IP "/usr/bin/unzip -l -q SOME_PATH/20130409060734\*.zip | grep -i XML  |wc -l"

希望对你有帮助

关于linux - 使用 SSH 的调用命令失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895001/

相关文章:

linux - 如何在 unix 中运行无密码的 sudo 访问

android - 无法建立波动率概况

bash - 简单的 docker 部署策略

linux - 使用sed提取匹配输出?

ruby - 在路径下删除 Ruby 中的文件夹

linux - shell脚本中的命令返回

java - 使用 sudo 命令执行 tcl

git pull/clone private repo 仅使用 bash 脚本

android - 从 adb 在后台运行 logcat

shell - 如何通过shell脚本查看Jboss(EAP 7)服务器运行状态