2013-04-09 422 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