Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

paramikoをつかいpython3でSSHリモートコマンドをやる その1:とりあえず使う

shuzo-kino.hateblo.jp
などでやったリモートコマンドですが……これをsubprocessなりで立ち上げると、毎回毎回立ち上げる羽目になり効率が宜しくありません。

実際のところ

導入

$ pip install paramiko

スクリプト

import paramiko

# SSHクライアントのインスタンスを作成
client = paramiko.SSHClient()

# 初めてのSSH接続時にサーバーの公開鍵を自動的に受け入れるように設定
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# SSHサーバーに接続
remote = '192.168.1.X'
username = 'foo'
password = 'bar'
client.connect(remote, username=username, password=password)

# リモートでコマンドを実行
stdin, stdout, stderr = client.exec_command('ls -l')

# コマンドの実行結果を出力
print(stdout.read().decode())

# SSH接続をクローズ
client.close()

# 標準入力をクローズ。これをしないとタイムアウトエラー
stdin.close()

AttributeError: 'NoneType' object has no attribute 'time'とか怒られるが?

stdinを閉じないと、タイムアウトエラーとして異常終了します