根据项目要求,我需要检查在远程机器上生成的zip文件的内容。这整个活动是使用自动化框架套件完成的。这是用shell脚本编写的。我使用带有-l和-q开关的ssh命令abd execute unzip命令执行上述活动。但是这个命令失败了。并显示以下错误消息。
[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
请帮我解决这个问题。
先谢谢, Priyank Shah
答案 0 :(得分: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"
希望这有帮助