1

私は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 ドキュメントがあり、接続先などに関するすべての情報が含まれています。問題は、ホストへの ssh、rpm -q app-name への接続ごとに約 10 秒かかり、それを画面に出力し、次のホストに接続する前に接続を閉じることです。それはpython + paramikoの通常の動作ですか?:/

私のスクリプトで行っていることについてさらに情報が必要な場合はお知らせください。ただし、これで十分だと思いました。

EDIT:これらのホストへの手動接続は非常に高速であり、遠く離れたリモートマシンでも超低速でもないことにも言及したかった. それは私のコードにあるに違いありません...私にはもうアイデアがありません。

4

1 に答える 1

0

「解決策」を見つけました...pycryptoを2.6から2.4.1にダウングレードし、公開sshキーのビットサイズを下げることで、速度が大幅に向上しました。

参考までに、pycrypto をダウングレードするには:

sudo pip install -U https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.4.1.tar.gz

キー使用のビットサイズを下げるには:

ssh-keygen -t rsa -b 768 -C "email@example.com"
于 2013-04-10T06:34:57.783 に答える