0

根据项目要求,我需要检查在远程机器上生成的 zip 文件的内容。整个活动是使用自动化框架套件完成的。这是用 shell 脚本编写的。我正在使用 ssh 命令 abd 使用 -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

请帮我解决这个问题。

在此先感谢,普里扬克·沙阿

4

1 回答 1

1

当您从本地计算机运行命令时,星号字符会在本地计算机上展开,然后再传递给远程 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"

希望这可以帮助

于 2013-04-09T07:07:06.110 回答