はじめに
Rloginのファイル転送機能を使って、定期的にサーバ上のログファイルをホスト側にダウンロードしていたが面倒くさくなってきたのでPythonで自動化してみる。
本記事のゴール
PythonライブラリのParamikoを使って、WSL2で作ったUbuntu内の特定ディレクトリ内のファイルをホスト側PCにダウンロードする。
(アップロードは今回しない。)
環境
- Windows 10 64bit
- Ubuntu 20.04.4 LTS
利用ライブラリ
- Paramiko
- SSH, SFTP用のPythonライブラリ
- https://docs.paramiko.org/en/stable/api/client.html
事前準備
Paramikoのインストール
pip install paramiko
コード
サーバ側の/home/ashitaka1963
にあるファイルtest.txt
をホスト側PCのpythonを実行したディレクトリと同階層にあるbkフォルダにファイル名bk_test.txt
としてダウンロードする。
※ダウンロードするファイルと配置先については権限があることを事前に確認しておく。
import paramiko with paramiko.SSHClient() as client: HOSTNAME = '127.0.0.1' USERNAME = 'ashitaka1963' PASSWORD = 'password' REMOTE_PATH = '/home/ashitaka1963/test.txt' LOCAL_PATH = '.\\bk\\bk_test.txt' # SSH接続 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=HOSTNAME, port=22, username=USERNAME, password=PASSWORD) # SFTP with client.open_sftp() as sftp: sftp.get(remotepath=REMOTE_PATH, localpath=LOCAL_PATH)
おわりに
Paramikoを使って、SFTPでファイルのダウンロードができました。
今回はダウンロードだけでしたが、アップロードもコードはほとんど同じで、sftp.put
メソッドを使えばアップロードもできるみたいです。