fabricで踏み台経由でファイルをコピーする

# fabfile.py

from fabric.api import env,run,put
from fabric.state import connections, output
    
proxy_server = 'proxyUser@prosyServer'
proxy_password = 'proxyPassword'

target_server = 'targetUser@targetServer'
target_password = 'targetPassword'


def deploy():
  # 踏み台にログイン
  env.gateway = ''
  env.host_string = proxy_server
  env.password = proxy_password
  # この行はいらないかも
  run('', quiet=True)
       
  # 対象サーバーにログイン
  env.gateway = proxy_server
  env.host_string = target_server
  env.password = target_password
      
  put('C:\\local\\file\\path', '/remote/file/path')

  # コネクションを全部切らないと最後にエラーがでるみたい
  for key in connections.keys():
    if output.status:
        connections[key].close()

参考:

http://aomoriringo.hateblo.jp/entry/2012/11/29/162341

修正→デプロイ→検証をたくさん繰り返す必要がある場合にはとても重宝する。