文件上传服务器(用python代码连接服务器执行命令ssh)

实现功能如下:连接服务器–用户名和密码的方式实现windows与服务器之间文件上传下载1、Paramiko 模块通过 ssh 远程链接服务器并执行响应的操作,类似于 XShellps:ansible 批量管理服务器工具,底层用的就是 paramiko 模块pip3 install paramiko2、连接服务器–用户名和密码的方式import paramiko# 创建SSH对象ssh = paramiko.SSHClient()# 允许链接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 链接服务器 用户名和密码的方式ssh.connect(hostname='192.168.52.16',port=22,username='root',password='1qaz@WSX')# 执行命令stdin, stdout, stderr = ssh.exec_command('df -h')"""stdin可以用来输入额外的命令 stdout,stderr 正确和错误的返回结果"""res = stdout.read()print(res.decode('utf-8'))# 关闭链接ssh.close()3、实现windows与服务器之间文件上传下载import paramikoimport osdef sftp_upload(host,port,username,password,local,remote): sf = paramiko.Transport((host,port)) sf.connect(username = username,password = password) sftp = paramiko.SFTPClient.from_transport(sf) try: if os.path.isdir(local): # 判断本地参数是目录还是文件 for f in os.listdir(local): # 遍历本地目录 sftp.put(os.path.join(local + f), os.path.join(remote + f)) # 上传目录中的文件 else: sftp.put(local, remote) # 上传文件 except Exception as E: print('upload exception:', E) sf.close()def sftp_download(host,port,username,password,local,remote): sf = paramiko.Transport((host,port)) sf.connect(username = username,password = password) sftp = paramiko.SFTPClient.from_transport(sf) try: if os.path.isdir(local): # 判断本地参数是目录还是文件 for f in sftp.listdir(remote): # 遍历远程目录 sftp.get(os.path.join(remote + f), os.path.join(local + f)) # 下载目录中文件 else: sftp.get(remote, local) # 下载文件 except Exception as E: print('download exception:',E) sf.close()if __name__ == '__main__': host = '192.168.52.16'#主机 port = 22 #端口 username = 'root' #用户名 password = '1qaz@WSX' #密码 local = 'E:\\a\\'#本地文件或目录,与远程一致,当前为windows目录格式,window目录中间需要使用双斜线 remote = '/opt/'#远程文件或目录,与本地一致,当前为linux目录格式 #sftp_upload(host,port,username,password,local,remote)#上传 sftp_download(host,port,username,password,local,remote)#下载

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/27014.html