python paramiko模块简介
python paramiko模块简介
简介
paramiko遵循SSH2协议,支持以加密和认证的方式进行远程服务器的连接。由于使用python这个能够跨平台运行的语言,所以支持所有python支持的平台,如Linux、Solaris...
如果需要使用SSH从一个平台连接到另一个平台,进行一系列的操作时,它是最佳工具之一。
主要功能
类似SSH协议,Paramiko只要分为SSHClient和SFTPClient,前者只要对远程主机进行操作,输入命令对远程主机进行控制;后者主要实现了从远程主机上上传文件,除此之外还有其他使用功能,本文主要是常用方法简介。
windows安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple paramiko
使用paramiko>>>
1 #设置ssh连接的远程主机地址和端口 2 t = paramiko.Transport((ip,port)) 3 #设置登录名和密码 4 t.connet(username=username,password=password)) 5 #连接成功后打开一个channel 6 chan = t.open_session(session_timeout)) 7 #打开远程的terminal 8 chan.get_pty() 9 #激活terminal 10 chan.invoke_shell()
然后就可以通过chan.send("command")和chan.recv(recv_buffer)来远程执行命令以及本地获取反馈
具体使用模板例子
1 import paramiko 2 3 class SSHConnection: 4 #初始化连接创建Transport通道 5 def __init__(self,host='xxx.xxx.xxx.xxx',port=22,user='xxx',pwd='xxxxx'): 6 self.host = host 7 self.port = port 8 self.user = user 9 self.pwd = pwd 10 self.__transport = paramiko.Transport((self.host,self.port)) 11 self.__transport.connect(username=self.user,password=self.pwd) 12 self.sftp = paramiko.SFTPClient.from_transport(self.__transport) 13 #关闭通道 14 def close(self): 15 self.sftp.close() 16 self.__transport.close() 17 #上传文件到远程主机 18 def upload(self,local_path,remote_path): 19 self.sftp.put(local_path,remote_path) 20 #从远程主机下载文件到本地 21 def download(self,local_path,remote_path): 22 self.sftp.get(remote_path,local_path) 23 #在远程主机上创建目录 24 def mkdir(self,target_path,mode='0777'): 25 self.sftp.mkdir(target_path,mode) 26 #删除远程主机上的目录 27 def rmdir(self,target_path): 28 self.sftp.rmdir(target_path) 29 #查看目录下文件以及子目录(如果需要更加细粒度的文件信息建议使用listdir_attr) 30 def listdir(self,target_path): 31 return self.sftp.listdir(target_path) 32 #删除文件 33 def remove(self,target_path): 34 self.sftp.remove(target_path) 35 #查看目录下文件以及子目录的详细信息 36 #(包含内容和参考os.stat返回一个FSTPAttributes对象,对象的具体属性请用__dict__查看) 37 def listdirattr(self,target_path): 38 try: 39 list = self.sftp.listdir_attr(target_path) 40 except BaseException as e: 41 print(e) 42 return list 43 #获取文件详情 44 def stat(self,remote_path): 45 return self.sftp.stat(remote_path) 46 #SSHClient输入命令远程操作主机 47 def cmd(self,command): 48 ssh = paramiko.SSHClient() 49 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) 50 ssh._transport = self.__transport 51 stdin, stdout, stderr = ssh.exec_command(command) 52 result = stdout.read() 53 print(result) 54 return result

浙公网安备 33010602011771号