基于Paramiko的SSH/SFTP操作Python代码翻译及技术问询
使用Paramiko实现SSH连接、SFTP文件遍历及远程命令执行的代码翻译
我来帮你把这段Python代码做中文注释翻译,代码本身完全保留原样,同时给你拆解各部分的功能:
# 导入Paramiko库——这是Python里用来实现SSH远程连接、文件传输的常用第三方库 import paramiko # 创建一个SSH客户端实例,用来和远程服务器建立连接 ssh = paramiko.SSHClient() # 设置缺失主机密钥的处理策略(注:原代码这里没传具体策略,实际使用时一般传paramiko.AutoAddPolicy(),自动添加未知主机的密钥) ssh.set_missing_host_key_policy() # 连接远程SSH服务器,把'hostname'换成你实际要连的服务器地址,用户名是test,密码是123 ssh.connect('hostname', username='test', password='123') # 基于已经建立好的SSH连接,开启SFTP会话,这样就能操作远程服务器上的文件了 sftp = ssh.open_sftp() # 打开本地的path.txt文件,这个文件里应该存着一行行远程服务器上的路径 with open('path.txt') as fp: # 遍历文件里的每一行(也就是每个远程路径) for line in fp: # 打印当前正在处理的远程路径 print line # 列出这个远程路径下的所有文件和目录 for filename in sftp.listdir(line): # 判断当前文件是不是.txt、.file或者.xml后缀的 if filename.endswith('.txt') or filename.endswith('.file') or filename.endswith('.xml'): # 把符合条件的文件名存到check_1变量里 check_1 = filename # 在远程服务器上执行hostname命令,获取命令的输入、输出、错误流对象 stdin, stdout, stderr = ssh.exec_command('hostname') # 读取命令的输出内容,解码成字符串后按行分割成列表 result1 = stdout.read().decode().splitlines() # 这里原代码没写完,是要继续执行另一条远程命令,把...换成你实际要执行的命令就行 std1in, std1out, std1err = ssh.exec_command(...)
代码核心功能梳理
- 依赖库:Paramiko,专门用来处理SSH协议相关的远程操作
- 整体流程:
- 初始化SSH客户端并完成远程服务器的身份认证连接
- 开启SFTP会话,实现远程文件系统的遍历操作
- 读取本地文件中的远程路径列表,逐个处理每个路径下的文件
- 筛选指定后缀的目标文件,同时执行远程命令获取服务器相关信息
内容的提问来源于stack exchange,提问作者Vijay
相关产品推荐
相关产品推荐

