根据项目要求,我需要检查在远程机器上生成的zip文件的内容,整个活动是使用自动化框架套件完成的。它是用shell脚本编写的。我使用ssh命令abd execute unzip命令和-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命令之前,它将在本地计算机上展开。因此,您的命令希望在您的计算机上找到一些路径/20130409060734*.zip文件,并将它们插入到ssh命令中以传递给另一台计算机,而您(我假设)是指远程计算机上的一些路径/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/