我对 python 不是一个完整的新手,但我相当新而且没有经验。最近,当我想编写一个脚本来自动化一些包版本检查+与我们的生产环境比较时,我发现了 paramiko,但是每个连接都需要很长时间:(
for app in apps:
tstapp_address = test_env['prefix'] + str(app['tstapp']) + test_env['suffix']
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(tstapp_address, username='our_username', password='secret')
sys.stdout.write('\n' + str(app_num) + ') ' + app['name'] + ' on ' + 'tstapp' + str(app['tstapp']) + '\n')
stdin, stdout, sderr = ssh.exec_command('rpm -q ' + app['name'])
tstapp_rpm = stdout.readline()
sys.stdout.write(str(tstapp_rpm))
stdin, stdout, stderr = ssh.exec_command('exit')
app_num += 1
ssh.close()
我有一个 JSON 文档,我在这之前检索了它,它包含有关连接位置等的所有信息。问题是 - 每个连接大约需要 10 秒才能通过 ssh 连接到主机,连接到 rpm -q app-name,将其输出到屏幕上并在连接到下一个主机之前关闭连接。这是 python+paramiko 的常规行为吗?:/
如果您需要有关我在脚本中所做的工作的更多信息,请告诉我,但我认为这已经足够了。
编辑:还想提一下,手动连接到这些主机非常快,它们不是遥远的远程机器,也不是超级慢。它一定是我的代码的东西......我只是没有更多的想法。