【发布时间】:2017-02-11 13:30:53
【问题描述】:
说明
我正在尝试编写一个 python 脚本以通过 SSH 连接到我的虚拟机并执行一些命令。
-
如果我手动执行此操作,我的会话将保持打开状态,并且我仍然可以看到我的实时日志。
-
如果我使用脚本,在 SSH 进入并自动执行一些命令后,它会不断退出并返回到我的用户提示符。我正在努力防止这种情况发生。
视频
手动 = https://dl.dropboxusercontent.com/u/56134944/ssh_wag_manually.mov
通过 Python 脚本 = https://dl.dropboxusercontent.com/u/56134944/ssh_wag_py.mov
这就是我现在拥有的
import paramiko
import time
import sys
# Note
# sudo pip install --user paramiko
def ssh_con (ip, un, pw):
global client
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print ("Connecting to device/VM: %s" % ip)
client.connect(ip, username=un, password=pw)
def cmd_io (command):
global client_cmd
client_cmd.send("%s \n" %command)
time.sleep(1)
output = client_cmd.recv(10000).decode("utf-8")
print (output)
# ip = raw_input("Enter WAG IP : ")
# ip = sys.argv[1]
ip = '172.168.200.300'
un = 'xyz'
pw = 'abc'
ssh_con(ip,un,pw)
client_cmd = client.invoke_shell()
print ("SSH CONNECTION ESTABLISHED TO vMEG %s" % ip)
cmd_io ("en")
cmd_io ("terminal monitor")
cmd_io ("debug wag https")
cmd_io ("debug wag httpc")
cmd_io ("debug https")
cmd_io ("debug httpc")
cmd_io ("debug wag kafka")
结果
[local]site#
terminal monitor
[local]site#
debug wag https
[local]site#
debug wag httpc
[local]site#
debug https
[local]site#
debug httpc
[local]site#
debug wag kafka
[local]site#
.... Quitting and return the command prompt ....
──[/Applications/MAMP/htdocs/code/python]
└──
如何防止这种情况发生?
【问题讨论】:
-
SSH 会话何时退出:立即退出,或在一定时间后,或在您输入命令后,或其他?
-
基本上在完成脚本的最后一行之后...
-
好吧,你的脚本正在结束,所以自然会关闭进程打开的任何 TCP 连接。您希望脚本继续运行吗?您是否希望 ssh 连接以某种方式在脚本退出后仍然存在?在所有命令执行完毕后,你想对这个 ssh 会话做什么?
-
我希望脚本继续运行,让带有这些命令的 SSH 窗口保持打开状态,并且不返回提示,直到我输入
exit -
@Kenster :进程打开的任何 TCP 连接自然都会关闭,我不知道。
标签: python ssh terminal paramiko