2013-04-09 31 views
0

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

[[email protected] IP Function]$ ./TESTS.sh 
    ssh [email protected] 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脚本执行时都失败了。

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

请帮我解决这个问题。

由于事先 Priyank沙阿

当您从本地计算机的命令
+0

这得到了解决,因为远程拉链创作,走的时间零头金额和SSH命令的执行是相当快的。所以虽然触发ssh命令不会在该位置找到zip文件。所以我把睡眠放在两句话之间。 – 2013-04-09 09:48:51

回答

1

,星号字符是在你的本地计算机上它被传递到你的SSH远程命令之前扩大。因此,您的命令期望在您的计算机上找到SOME_PATH/20130409060734 * .zip文件,并将它们插入到您的ssh命令中以传递给其他计算机,而您(我假设)表示SOME_PATH/20130409060734 * .zip文件远程机器。

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

ssh [email protected]_IP "/usr/bin/unzip -l -q SOME_PATH/20130409060734\*.zip | grep -i XML |wc -l" 

希望这有助于

+0

感谢您的建议,我尝试了您提到的所有更改,1.给定前缀反斜杠为*和2)给定完整路径的解压缩可执行文件。但仍然有同样的错误。 – 2013-04-09 07:29:24

+0

请执行'ssh remote_host“ls -l SOME_PATH”| grep -i zip'并通过编辑你的问题发布输出。 – MelBurslan 2013-04-09 07:47:06