2017-08-01 172 views
-1

我想從我的本地的Mac OS通過SSH命令,啓動從Mac OS X計算機的遠程腳本

我的VM開始一個python腳本

我做

ssh -i /key/path/id_rsa [email protected] "sleep 5s; cd /root/Server;pkill -f server.py;./server.py;" 

結果

它是SSH的,它很快運行這些命令,並迅速將我註銷。我期待它在SSH會話中保持打開狀態。

我的劇本是運行...

PS -aux | grep的蟒蛇

root  901 0.0 0.2 553164 18584 ?  Ssl Jan19 20:37 /usr/bin/pytho -Es /usr/sbin/tuned -l -P 
root  15444 0.0 0.0 112648 976 pts/0 S+ 19:16 0:00 grep --color=auto python 

如果我這樣做,它的工作原理

ssh -i /key/path/id_rsa [email protected] "sleep 5s; cd /root/Server" 

然後

./server.py; 

然後,它的工作原理。

我錯過了什麼?

+0

你可以[編輯]你的問題,包括這個server.py程序的內容? – Kenster

+0

你是什麼意思*「我期待它保持開放」*?爲什麼會這樣做?它已經完成了你所要求的一切,所以命令完成了。 –

回答

1

您可能需要狀態開始你的腳本外殼即/bin/bash server.py

ssh -i /key/path/id_rsa [email protected] "sleep 5s; cd /root/Server; pkill -f server.py; /bin/bash ./server.py;" 

如果你想啓動腳本,並讓它運行您結束ssh會話即使你可以使用nohup。請注意,你需要把該進程在後臺和重定向stdinstdoutstderr來完全地從遠程進程分離:

-i /key/path/id_rsa [email protected] "sleep 5s; cd /root/Server; nohup /bin/bash ./server.py </dev/null> std.out 2> std.err &" 

它看起來像你的SSH命令返回imediately的原因是因爲莫名其妙的調用pkill -f server.py也將終止實際的ssh會話,因爲它在命令行中還包含server.py

0

我沒有我的常規MacBook Pro在這裏進行測試,但我認爲添加另一個分號並以/ bin/bash結束命令行可能會執行此操作。

相關問題