使用paramiko上传目录,重点是上传的那个过程,想了一上午才想出来,可能有点奇葩,但是还是实现了这个功能
#!/usr/bin/python import paramiko import os def upload_dir(ip,port,username,password,local_dir,remote_dir): paramiko.util.log_to_file("paramiko.log") trans = paramiko.Transport((ip,port)) trans.connect(username=username,password=password) sftp=paramiko.SFTPClient.from_transport(trans) try: sftp.mkdir(remote_dir) except Exception,e: pass a=os.path.join(remote_dir,local_dir.split("/")[-1]) sftp.mkdir(a) for root, subdir, files in os.walk(local_dir): for dir in subdir: r_d = local_dir.split("/")[:-1] local_subdir = os.path.join(root,dir) l_d = local_subdir.split("/") r_m = l_d[len(r_d):] r_m = "/".join(r_m) remote_subdir = os.path.join(remote_dir,r_m) print remote_subdir sftp.mkdir(remote_subdir) for file in files: local_dir_path = os.path.join(root,file) l_d_p = local_dir_path.split("/") r_d_p = l_d_p[len(r_d):] r_d_p = "/".join(r_d_p) remote_dir_path = os.path.join(remote_dir,r_d_p) print remote_dir_path sftp.put(local_dir_path,remote_dir_path) def main(): ip = "10.2.0.137" port = 22 username = "root" password = "123456" local_dir = "/lll/api" remote_dir = "/kkkkkkkkkkkk" upload_dir(ip,port,username,password,local_dir,remote_dir) if __name__ == "__main__": main()