2016-07-26 78 views
-1

發送ssh命令的背景我已經在腳本以下行:我怎麼能在bash

output=$(sudo ssh [email protected] "/etc/config/users/pzsr7z/scripts-modified/scripts/wizard/enroller 10.193.22.236 22 WDCCRNMTS001 WDCCR-1-COMPT-R102 8") 

我怎麼能發送到後臺,這樣腳本就可以繼續其餘它的線,而這條線正在處理背景?

我試圖把一個&在該行的結束,但我最終得到從/ dev/null的一些奇怪的行爲(按鍵並沒有被正確處理)

+1

你還打算拍攝完成?您無法將後臺進程的輸出捕獲到變量中。 –

+2

......另外,一般來說,使用'sudo'來調用'ssh'是有點味道 - 除非你需要提升權限來讀取私鑰(即使這樣做最好用非root帳戶來完成) ,通常表明做錯了。 –

+0

@CharlesDuffy是的,我試圖捕獲命令的輸出,以便我可以驗證遠程SSH命令正確完成。有沒有辦法做到這一點?此外,正在使用sudo命令來訪問SSH密鑰。多人會使用這個命令,所以我覺得把密鑰放在root用戶的目錄下是允許用戶訪問它的最簡單的方法。 – lacrosse1991

回答

2

重定向標準輸入和輸出和錯誤到文件:

cmd="/etc/config/users/pzsr7z/scripts-modified/scripts/wizard/enroller 10.193.22.236 22 WDCCRNMTS001 WDCCR-1-COMPT-R102 8" 
ssh [email protected] "$cmd" </dev/null >enroller.log 2>&1 & ssh_pid=$! 

...那麼,以後,你可以等待它完成和讀取文件:

if wait "$ssh_pid"; then 
    echo "Remote command exited with a successful exit status" >&2 
else 
    echo "Remote command exited with a failed exit status" >&2 
fi 
output=$(<enroller.log) 
+0

謝謝!那就是訣竅 – lacrosse1991