gpt4 book ai didi

python paramiko ssh

转载 作者:太空狗 更新时间:2023-10-29 17:02:16 25 4
gpt4 key购买 nike

我是 python 的新手。我写了一个脚本来连接到主机并执行一个命令

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=pw)

print 'running remote command'

stdin, stdout, stderr = ssh.exec_command(command)
stdin.close()

for line in stdout.read().splitlines():
print '%s$: %s' % (host, line)
if outfile != None:
f_outfile.write("%s\n" %line)

for line in stderr.read().splitlines():
print '%s$: %s' % (host, line + "\n")
if outfile != None:
f_outfile.write("%s\n" %line)

ssh.close()

if outfile != None:
f_outfile.close()

print 'connection to %s closed' %host

except:
e = sys.exc_info()[1]
print '%s' %e

当远程命令不需要 tty 时工作正常。我找到了一个 invoke_shell 示例 Nested SSH session with Paramiko .我对这个解决方案不满意,因为如果服务器有我的脚本中未指定的提示 -> 无限循环或脚本中指定的提示是返回文本中的字符串 -> 并非所有数据都将被接收.有没有更好的解决方案,比如在我的脚本中发送回 stdout 和 stderr?

最佳答案

接受的答案有问题,它有时(随机地)从服务器带来截断的响应。我不知道为什么,我没有调查接受答案的错误原因,因为这段代码对我来说非常有效:

import paramiko

ip='server ip'
port=22
username='username'
password='password'

cmd='some useful command'

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)

stdin,stdout,stderr=ssh.exec_command(cmd)
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)

stdin,stdout,stderr=ssh.exec_command('some really useful command')
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)

关于 python paramiko ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745138/

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