32

Python で ssh コマンドを処理するための最初のコードを作成します。stackoverflow を検索したところ、 paramikopexpectなど、 ssh を介して渡されるコマンドを処理するために使用できる Python ライブラリがいくつかあることがわかりました。

特に、リモート サーバーからファイルのコンテンツを読み取り、ssh/scp を介してファイルをコピーし、リモート サーバーでスクリプトを開始した後にリモート サーバーから出力を取得する必要があります。

おそらく何人かの専門家は、どのライブラリが優れているかをアドバイスし、長所と短所を特定できますか?

4

4 に答える 4

28

プロトコル レベルで特別なことを行っていないため、おそらくプロトコルを完全に Python で実装する必要はなく、subprocessモジュールを使用して ssh/scp コマンドを実行するだけで済みます。

import subprocess
subprocess.check_call(['ssh', 'server', 'command'])
subprocess.check_call(['scp', 'server:file', 'file'])
于 2009-12-21T09:51:15.220 に答える
26

ライブラリ、ラッパー:

  1. http://www.lag.net/paramiko/

    #!/usr/bin/env python
    import paramiko
    from contextlib import contextmanager
    host = '192.168.10.142'
    username = 'slacker'
    password = 'password'
    def create_ssh(host=host, username=username, password=password):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
        try:
           print "creating connection"
           ssh.connect(host, username=username, password=password)
           print "connected"
           yield ssh
        finally:
           print "closing connection"
           ssh.close()
           print "closed"
    

1) 2) を利用し、いくつかのより高いレベルの機能を提供します。後者があなたの要件に合っている場合は、試してみることをお勧めします 1)


更新: 1) はなくなりました (2017-09-12)

  1. http://media.commandline.org.uk/code/ssh.txt (使用例: https://zeth.net/archive/2008/05/29/sftp-python-really-simple-ssh/ )

    s = ssh.Connection('example.com', 'warrior', password = 'lennalenna')
    s.put('/home/warrior/hello.txt', '/home/zombie/textfiles/report.txt')
    s.get('/var/log/strange.log', '/home/warrior/serverlog.txt')
    s.execute('ls -l')
    s.close()
    

: 上記のコード例は、印象をつかむためだけに提供されています。コードはテストされていません。

于 2009-12-21T09:41:15.503 に答える
4

上記のライブラリのいずれも提供していない機能の 1 つは、複数のサーバーへの同時接続です。システム管理者が何百ものサーバーでコマンドを実行する必要がある今日の時代では、コマンドの並列実行を処理できるライブラリが非常に重要です。私が知っている2つのライブラリは次のとおりです。

  1. 引き金

  2. パラレル SSH

Trigger は SSH ラッパー以上のネットワーク ライブラリであり、Twisted コア API を利用して同時 I/O 操作を可能にします。

Parallel-SSH は、Paramiko のシン ラッパーであるライブラリですが、ボンネットの下で Gevent を使用して同時 I/O 操作を有効にします。

于 2016-08-01T19:37:52.200 に答える
3

Twisted Conchを見てみましょう。それはあなたが望むすべてを処理します。SCP スタイルのファイル転送を探しているだけなら、いつでも Python モジュールsecsh-filexferを使用できます。

于 2009-12-21T09:37:46.230 に答える