python – 防止Paramiko退出
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 防止Paramiko退出,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2910字,纯文字阅读大概需要5分钟。
内容图文
![python – 防止Paramiko退出](/upload/InfoBanner/zyjiaocheng/810/609215a5d3e24f6091fa607d050c8fcb.jpg)
描述
我正在尝试编写一个python脚本来SSH到我的VM并执行一些命令.
>如果我手动执行,我的会话保持打开状态,我仍然可以看到我的日志.
>如果我使用脚本,在SSH输入并自动执行一些命令后,它会一直退出并返回到我的用户提示符.我试图阻止这一点.
视频
手动=
https://dl.dropboxusercontent.com/u/56134944/ssh_wag_manually.mov
通过Python Script =
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]
└──
怎么会去防止这种情况?
我现在正在接受任何建议.
任何提示/建议/帮助将非常感谢!
解决方法:
你的主要问题是你只是停止阅读paramiko的输出.如果您希望程序继续等待VM的进一步输出,您需要告诉它这样做.例如,这应该做的伎俩:
import paramiko
import time
import sys
import socket
# 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")
client_cmd.settimeout(1.0)
while True:
try:
output = client_cmd.recv(10000).decode("utf-8")
print (output)
except socket.timeout:
pass
但是,这并没有解决所有问题.您的脚本也应该更严格地处理可能的错误情况.例如,它应该是读取stderr流,检查通道是否实际已经关闭,并且只需等待1秒钟即可完成每个命令.
如果只是一个快速的脚本,这种错误处理的缺乏可能都很好.但如果你需要100%可靠地工作,你需要在某些时候解决它们.
内容总结
以上是互联网集市为您收集整理的python – 防止Paramiko退出全部内容,希望文章能够帮你解决python – 防止Paramiko退出所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。