Python - scp転送を行う

Pythonからscp転送を行ってみます。

scp転送とはssh通信を使ったファイル転送です。

インストール

Pythonからscp転送を行うためには paramikoscp というライブラリをインストールする必要があります。

1
2
pip install paramiko
pip install scp

コード

scp転送を行う最小コードは次のようになります。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import scp
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接続する
print('[ssh接続]')
ssh.connect('[IPアドレス]', port=[ポート番号], username='[ユーザ名]', password='[パスワード]')

print('[SCP転送開始]')
# scp clientオブジェクト生成
with scp.SCPClient(ssh.get_transport()) as scp:
#
# SCP送信(ローカル → サーバ)
#
# ・同じファイルがあったら上書きされる。
# ・ディレクトリは指定できない。
scp.put('test.csv', '/var/samba/.')

#
# SCP受信(サーバ → ローカル)
#
# ・同じファイルがあったら上書きされる。
# ・ディレクトリは指定できない。
scp.get('/var/samba/mpv-shot0004.jpg', '.')

SCP送信する場合でも、SCP受信する場合でも、送信先に同じ名称のファイルがあると上書きされるので注意して下さい。

また、ディレクトリを指定することはできないので複数ファイルを送信する場合は、tarコマンドやzipコマンドを使って1ファイルにまとめてからscp転送する必要があります。