Paramikoというモジュールを使っていきます。
SSHv2プロトコルを採用していて、2.7系と3.4以上のバージョンに対応しています。クライアントとサーバーの役割を担うのを補助します。
pip install paramiko
続いて、pythonファイルに下記のような感じで実装します。
セキュリティ的には、認証情報は別ファイルに分けて読み込むのが無難です。
# paramikoのインポート
import paramiko
# 認証情報
IP_ADDRESS = '192.168.0.117'
USER_NAME = 'pi'
PASSWORD = 'raspberry'
# パスワードでなくキーファイルの場合は以下
KEY_FILENAME = '/Users/test/.ssh/aws.pem'
# サーバー上で実行するコマンド
cmd = 'sudo halt'
# sshクライアントの作成
client = paramiko.SSHClient()
# サーバーのホストキーが見つからなかった場合の設定 自動で追加したい場合はparamiko.AutoAddPolicy()に変更
client.set_missing_host_key_policy(paramiko.WarningPolicy())
# 上記で設定したIPアドレス、ユーザー名、キーファイルを渡す
client.connect(IP_ADDRESS,
username=USER_NAME,
password=PASSWORD,
#key_filename=KEY_FILENAME,
timeout=3.9)
# コマンドの実行
stdin, stdout, stderr = client.exec_command(cmd)
# コマンド実行結果を変数に格納
cmd_result = ''
for line in stdout:
cmd_result += line
# 実行結果を出力
print(cmd_result)
# ssh接続断
client.close()
# お作法
del client, stdin, stdout, stderr
以上でTeraterm等を介さずとも、Python上にてSSH接続ができました。
.pyファイルに記述せずに対話型シェルで実行することも可能です。
その他のPython記事については下記をご覧ください。٩(๑❛ᴗ❛๑)