7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python + paramiko でSFTP転送

Last updated at Posted at 2021-03-07

環境

macOS 10.14.6
Python 3.8.5
paramiko 2.7.2

目次

  1. 背景
  2. 実装方法
  3. 参考文献

背景

SFTP通信を行うフリーソフトは色々ありますが、

  • 特定のファイルだけ送りたい
  • 日次バッチで自動連携したい

のようなニーズがでできたのでPythonとparamikoというライブラリを使ってSFTPによるファイル転送を実装してみました。

実装方法

まずはライブラリのインストール

pip install paramiko

SFTP転送コードは以下の通り。
SFTP通信はSSHで暗号化された通路を使ってFTP通信を行いファイルデータのやりとりを行います。
そのためSSH接続をしてから通信を開始する実装手順となっています。

import paramiko

# SFTP接続設定
sftp_config = {
    'host' : 'example.com',
    'port' : '22',
    'user' : 'user',
    'pass' : 'pass'
} 

#SSH接続の準備
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(sftp_config['host'], 
               port=sftp_config['port'],
               username=sftp_config('user'),
               password=sftp_config['pass'])

# SFTPセッション開始
sftp_connection = client.open_sftp() 
    
### 相手先サーバにファイルを転送する場合
CONNECT_PATH = 'XXX' # 相手先サーバのフォルダパス

for f in files:  #転送対象ファイルリストがfilesに入っていると仮定
    sftp_connection.put(f, CONNECT_PATH + f)
    sftp_connection.close()

### 相手先サーバからファイルをダウンロードする場合
#第1引数が相手先サーバのファイル名、第2引数がダウンロードしてくるときのファイル名
sftp_connection.get(CONNECT_PATH + 'test.csv', 'download_test.csv')

client.close()

参考文献

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?