如何将远程服务器/maindir/fil1.txt
中的文件复制到子目录/maindir/subdir/file1.txt
我有使用sftp
创建的paramiko
。但它始终检查要从中复制的本地路径。
filename_full_path='/maindir/fil1.txt'
destfilename_full_path='/maindir/subdir/file1.txt'
sftp.put(filename_full_path, destfilename_full_path)
如何告诉sftp本地路径也在远程主机中?
您可以尝试以下方式
a=paramiko.SSHClient()
a.set_missing_host_key_policy(paramiko.AutoAddPolicy())
a.connect('ip',username='user',password='passw')
stdin, stdout, stderr = a.exec_command("cp /sourc/file /target/file")
在广泛的SFTP服务器实现(特别是OpenSSH)中,不支持远程复制文件。因此即使Paramiko确实支持它(它没有),它可能对你没有任何用处。
SFTP有copy-file
扩展,但很少有服务器/客户端库支持它。
见draft-ietf-secsh-filexfer-extensions-00。
备择方案:
cp
命令(不再是SFTP,需要shell访问) - 使用SSHClient.exec_command
。