gpt4 book ai didi

python - 仅使用标准库在 Python 中打开 SSH session

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:07 24 4
gpt4 key购买 nike

我正在尝试修复一段最初在 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 not defined。没有 ssh 库。我尝试过其他解决方案,但无济于事。有任何想法吗?同样,我只需要使用标准库并删除 paramiko。

最佳答案

子进程.Popen()如果没有可用的库,则使用 subprocess.Popen() 控制本地 ssh session 。这是一种 super 原始的做事方式,如果可以避免,不推荐这样做。

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

但推荐的方法是将 paramiko 用于 ssh 客户端和服务器。它将处理所有低级操作。使用起来非常简单。

关于python - 仅使用标准库在 Python 中打开 SSH session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54295844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com