做论坛网站赚钱吗,衡水提供网站制作公司哪家专业,ppt免费模板100个,济南网站建设的公司ssh是一个协议#xff0c;OpenSSH是其中一个开源实现#xff0c;paramiko是Python的一个库#xff0c;实现了SSHv2协议(底层使用cryptography)。 有了Paramiko以后#xff0c;我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作#xff0c;而不是通过ssh命令对…ssh是一个协议OpenSSH是其中一个开源实现paramiko是Python的一个库实现了SSHv2协议(底层使用cryptography)。 有了Paramiko以后我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作而不是通过ssh命令对远程服务器进行操作。 由于paramiko属于第三方库所以需要使用如下命令先行安装pip install paramiko
底层cryptography加密解密模块cryptography 的目标是成为“人类易于使用的密码学包cryptography for humans”这个想法使你能够创建简单安全、易于使用的加密方案。需要先安装pip install cryptography 如果已经安装过可以通过pip install --user -I cryptography
paramiko包含两个核心组件SSHClient和SFTPClient。 SSHClient的作用类似于Linux的ssh命令是对SSH会话的封装该类封装了传输(Transport)通道(Channel)及SFTPClient建立的方法(open_sftp)通常用于执行远程命令。 SFTPClient的作用类似与Linux的sftp命令是对SFTP客户端的封装用以实现远程文件操作如文件上传、下载、修改文件权限等操作。
# Paramiko中的几个基础名词 1、Channel是一种类Socket一种安全的SSH传输通道 2、Transport是一种加密的会话使用时会同步创建了一个加密的Tunnels(通道)这个Tunnels叫做Channel 3、Session是client与Server保持连接的对象用connect()/start_client()/start_server()开始会话。
SFTPCLient作为一个sftp的客户端对象根据ssh传输协议的sftp会话实现远程文件操作如上传、下载、权限、状态 put(self, localpath, remotepath, callbackNone, confirmTrue) 上传文件到服务器 get(self, remotepath, localpath, callbackNone) 下载服务器的文件 remove(self, path) 删除服务器文件 rename(self, oldpath, newpath) 重命名服务器上的文件 mkdir(self, path, modeo777) 在服务器创建文件夹
from datetime import datetime
import paramiko
import osclass SftpDeal():def __init__(self):self.hostname ipself.username username self.password password self.port 22try:self.conn paramiko.Transport((self.hostname, self.port)) # 获取Transport实例self.conn.connect(usernameself.username, passwordself.password) # 连接SSH服务端使用passwordself.sftp_ob paramiko.SFTPClient.from_transport(self.conn) # 获取SFTP实例except Exception as e:print(e)# 上传文件local_file-本地目录remote_path-远程目录def upload(self,local_file,remote_path):try:self.sftp_ob.put(local_file, remote_path)except Exception as e:self.sftp_ob.mkdir(os.path.split(remote_path)[0])self.sftp_ob.put(local_file, remote_path)print(从本地 %s 上传到 %s % (local_file, remote_path))print(remote_path 文件上传成功 %s % datetime.now().strftime(%Y-%m-%d %H:%M:%S))#self.conn.close()def download(self,remote_path,local_file):try:self.sftp_ob.get(remote_path,local_file)except Exception as e:self.sftp_ob.mkdir(os.path.split(local_file)[0])self.sftp_ob.get(remote_path, local_file)print(从服务器 %s 下载到 %s % (remote_path,local_file ))print(remote_path,文件下载成功 %s % datetime.now().strftime(%Y-%m-%d %H:%M:%S))self.conn.close()def remove(self,remote_path):try:self.sftp_ob.remove(remote_path)print(remote_path 文件删除成功 %s % datetime.now().strftime(%Y-%m-%d %H:%M:%S))except:print(服务器上面无文件%s% (remote_path))#self.conn.close()