web-dev-qa-db-ja.com

python ssh処理用のライブラリ

pythonでsshコマンドを処理するための最初のコードを記述し、stackoverflowを検索しました。いくつかのpython paramikopexpect などのsshを介して渡されるコマンドの処理に使用されます。

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

おそらく、一部の専門家は、どのライブラリが優れているかをアドバイスし、利点または欠点を特定できますか?

26
yart

ライブラリ、ラッパー:

  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()
    

:上記のコード例は、インプレッションを取得するためにのみ提供されています。コードはテストされていません。

24
miku

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

import subprocess
subprocess.check_call(['ssh', 'server', 'command'])
subprocess.check_call(['scp', 'server:file', 'file'])
25
Tobu

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

  1. トリガー

  2. パラレル-SSH

トリガーは、SSHラッパーやネットワークライブラリよりもはるかに多く、TwistedコアAPIを使用して同時I/O操作を可能にします。

Parallel-SSHはParamikoの薄いラッパーですが、フードの下でGeventを使用して同時I/O操作を可能にするライブラリです

3
Amistad

Twisted Conch を見てみてください。それはあなたが望むすべてを処理します。 SCPスタイルのファイル転送を探している場合は、常にpython module secsh-filexfer を使用できます。

3
Douglas Mayle