2016-03-03 158 views
0

我有一個腳本,我想通過SSH在遠程運行。它檢查是否有一個進程正在運行,並且應該試圖殺死它,如果存在的話。現在,我的代碼如下所示:捕獲遠程命令在shell腳本內的變量輸出

ssh my_prod_env << ENDSSH 
... 
pid=$(pgrep -f "node my_app.js") 
echo $pid 
# kill process with $pid 
... 
exit 
ENDSSH 

的問題就在這裏:我不能在變量捕捉p纖ep命令的輸出。我嘗試用$(),反引號,管道然後閱讀,也許其他方法,但都沒有成功。

我想在一個ssh會話中完成所有操作。

現在我正在考慮命令的輸出轉到我無法在腳本中訪問的輸出流。不過,我可能是錯的。 無論哪種方式,將不勝感激。

+0

ssh my_prod_env | pgrep -f「節點my_app.js」? – agilob

+0

我想它的工作,但我可以避免再次只爲這個命令連接?在命令完成後,我必須留在遠程服務器上執行其他操作,並希望在一個ssh會話中完成所有操作。 – ezamur

回答

0

這是修復的東西 - 「轉義」的ENDSSH標籤。

ssh my_prod_env << /ENDSSH 
... 
# capture output of remote commands in remote variables 
... 
ENDSSH 

問題是我的變數是本地的,我試圖捕獲遠程命令的輸出。

這個提問/回答讓我意識到是怎麼回事:How to assign local variable with a remote command result in bash script?

所以,我的問題可以被標記爲重複或類似的東西,我猜。

0

好吧,你想要什麼意見的詳細信息提供之後,我相信這是正確的回答你的問題:

ssh my_prod_env -t 'pgrep -f "node my_app.js"' 

這將調用命令,讓你記錄在服務器上

相關問題