![](/img/trans.png)
[英]Opening SSH session and running commands in different terminal in Python
[英]Opening an SSH session in Python with only standard libraries
我正在尝试修复最初在Python 2.X中开发的一段代码。 我必须使用所有标准库,删除paramiko,并且需要保持功能相同。 如您所见,有一个端口号配置,用户名,密码等。有什么建议吗?
我尝试了其他SSH选项,但没有一个起作用。 它返回一个错误。
def grab_and_post_inventory_data(machine_name):
try:
if not USEKEYFILE?: ssh.connect(str(machine_name), port=PORT, username=USER, password=PASSWORD, timeout=TIMEOUT)
else: ssh.connect(str(machine_name), port=PORT, username=USER, key_filename=KEY_FILE, timeout=TIMEOUT)
except paramiko.AuthenticationException:
print(machine_name + ': authentication failed')
return None
except Exception as err:
print(machine_name + ":" + err)
return None
devargs = {}
输出是错误,表示未定义ssh。 没有ssh库。 我尝试了其他解决方案,但无济于事。 有任何想法吗? 同样,我只需要使用标准库并删除paramiko。
subprocess.Popen()如果没有可用的库,则使用subprocess.Popen()控制本地ssh会话。 这是一种超原始的处理方式,如果可以避免,则不建议这样做。
import subprocess
import sys
HOST="www.example.org"
# Ports are handled in ~/.ssh/config since we use OpenSSH
COMMAND="uname -a"
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print result
但推荐的方法是对SSH客户端和服务器使用paramiko。 它将处理所有低级操作。 使用非常简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.