2017-08-01 220 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结束命令行可能会执行此操作。

相关问题