前提・実現したいこと
ローカルのpython環境から、AWSのec2へ接続して、踏み台サーバから、
APサーバへ接続し、ログファイルを取得するプログラムを作成しています。
pythonからLinuxコマンドが使用できるライブラリ:paramikoを使用して、
以下のLinuxコマンドを実行して、ログファイルを取得しようと考えております。
■処理フロー
0. 踏み台サーバへSSH接続
- ssh -i .ssh/XXXXX.pem APサーバのIPアドレス を実行し、APサーバへ接続
- sudo su -
- cd /var/log/tomcat/v1
- cat XXX.log
- pythonで4.の結果を受け取る
該当のソースコード
python
1import paramiko 2 3def get_log_file(): 4 """ 5 APサーバへ接続し、ログファイルを取得する 6 取得した情報はstring型で返却する 7 """ 8 #接続 9 ssh = paramiko.SSHClient() 10 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 11 ssh.connect(踏み台サーバのIPアドレス, ぽーと番号, 接続ユーザ, key_filename=秘密鍵へのファイルパス) 12 13 #cmdの実行 14 stdin, stdout, stderr = ssh.exec_command('ssh -i .ssh/XXXXX.pem APサーバのIPアドレス\n') # ★★★ここで処理が止まっている?★★★ 15 for output in stdout: 16 print(output.strip()) 17 18if __name__ == '__main__': 19 get_log_file()
発生している問題・エラーメッセージ
「ssh -i .ssh/XXXXX.pem APサーバのIPアドレス」を実行するとサーバから応答が返ってきておりません。
そこで、「ls -al」を実行してみたところ、サーバから応答があり、
stdoutに「ls -al」の実行結果が格納されてきました。
なんとかAPサーバへ接続して、ログファイルを取得できないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。