Why it doesn't work?

作業のメモ、記録をブログに残しています。

PythonでSSH接続(Paramiko)

teratermを利用して、テストマシンへのSSH接続を実行しています。teratermのマクロを作成して可能な限り自動化していますが、Pythonでもできそうなのでやってみます。
PythonSSH接続するために、まずはparamikoをインストールします。
公式サイトはこちら。
Welcome to Paramiko! — Paramiko documentation

1. インストール
いつも通り、pipコマンドで。

$ pip install paramiko

2. SSH接続のサンプルコード
ホスト'example.com'にプライベートキーを使用して接続して、コマンド"pwd"を実行するサンプルです。

import paramiko
import time

hostname = 'example.com'
user_name = 'root'
private_key = 'private_key.txt'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=ip_addr, port=22, username=user_name, key_filename=private_key)
channel = client.invoke_shell()
while not channel.recv_ready():
    time.sleep(1)
received = channel.recv(2048)
channel.send('pwd\n')
while not channel.recv_ready():
    time.sleep(1)
received += channel.recv(2048)
print(received)

channel.close()
client.close()

以下のような結果が出力されます。

# pwd
/home/root
#

今回はエラー処理が実装されていないですが、この実装のままだとサーバーからの応答がないケースでは待ちを抜けないので注意して下さい。