2015-10-16 142 views
0

我不太確定問題所在。我現在在Kali Linux 2.0上,全新安裝。以下在Ubuntu 14.04上工作,但它不工作了(也許我不小心改變了它?)。它看起來對我來說是正確的,但每次運行它都會阻塞。嘗試將命令輸出存儲到變量時ssh阻塞

backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1') 

這是一個較大的腳本的一部分。 $ server和$ dir被設置。當我單獨運行命令時,我得到正確的輸出,但它不會結束連接。

+0

沒有運氣與我的答案,我已經擴展了第三個選項。你能提供一些反饋嗎?謝謝! –

回答

2

我不知道這是否有助於解決問題,但您的命令不處理文件名中帶空格的dirs。添加雙引號單引號裏面部分是這樣的:

SERVER='remoteServer' && REMOTE_DIR='remoteDir' && backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa "${SERVER}" 'ls -t "'${REMOTE_DIR}'" | head -n1'); echo "${backup_folder}" 

如果它不能幫助嘗試添加-v開關的越來越多的ssh到調試最終達到:

SERVER='remoteServer' && REMOTE_DIR='remoteDir' && backup_folder=$(ssh -vvv -i /home/dexter/.ssh/id_rsa "${SERVER}" 'ls -t "'${REMOTE_DIR}'" | head -n1'); echo "${backup_folder}" 

如果詳細輸出沒有幫助可能是一個MTU問題(這類問題不是二元類型,奇怪的行爲)。

您可以嘗試在你的身邊降低MTU(通常爲1500)來解決:

sudo ifconfig eth0 mtu 1048 up 

eth0顯然是一個例子接口,使用你自己的。

相關問題