Python - ssh接続しコマンドを実行する

Pythonからssh接続を行いコマンドを実行する処理を行ってみます。

pythonからssh通信ができるようになると、複数サーバに同じコマンドを実行できたり、定期的にサーバ情報を取得し問題があったらアラートを発するなど監視ができるようになりとても便利です。

インストール

Pythonからssh接続を行うためには paramiko というライブラリをインストールする必要があります。

1
pip install paramiko

コード

ssh接続しコマンドを実行する最小コードは次のようになります。

9行目では環境に応じて、IPアドレス・ポート番号・ユーザ名・パスワードを設定してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import paramiko

with paramiko.SSHClient() as ssh:
# 初回ログイン時に「Are you sure you want to continue connecting (yes/no)?」と
# きかれても問題なく接続できるように。
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# ssh接続
ssh.connect('[IPアドレス]', port=[ポート番号], username='[ユーザ名]', password='[パスワード]')

# コマンド実行
stdin, stdout, stderr = ssh.exec_command('ls -al')

# コマンド実行後に標準入力が必要な場合
# stdin.write('password\n')
# stdin.flush()

# 実行結果を表示
for o in stdout:
print('[std]', o, end='')
for e in stderr:
print('[err]', e, end='')