Python を使用してリモート サーバーにファイルをアップロードしたいと考えています。リモートパスが本当に存在するかどうかを事前に確認し、存在しない場合は作成したいと思います。擬似コード:
if(remote_path not exist):
create_path(remote_path)
upload_file(local_file, remote_path)
Paramikoでコマンドを実行してパスを作成することを考えていました(例mkdir -p remote_path
)。私はこれを思いついた:
# I didn't test this code
import paramiko, sys
ssh = paramiko.SSHClient()
ssh.connect(myhost, 22, myusername, mypassword)
ssh.exec_command('mkdir -p ' + remote_path)
ssh.close
transport = paramiko.Transport((myhost, 22))
transport.connect(username = myusername, password = mypassword)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(local_path, remote_path)
sftp.close()
transport.close()
しかし、接続を閉じてから再度開くため、この解決策は私には良くありません。それを行うより良い方法はありますか?