【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传、下载
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等都可以支持
远程执行命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | def ssh_connect(host, username, passwd, * commands): """远程连接执行命令""" import paramiko try : # flag = True ssh = paramiko.SSHClient() # 建立一个ssh client对象 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 使用自动保存服务器的主机名和密钥信息的策略 ssh.load_system_host_keys() # 每次连线时都会检查host key 与纪录的 host key 是否相同 ssh.connect(hostname = host, username = username, password = passwd, timeout = 300 ) result = {} for command in commands: stdin, stdout, stderr = ssh.exec_command(command) result[command] = stdout.read(), stderr.read() # 获取标准输出和标准错误输出的值 err_list = stderr.readlines() if err_list: print ( "ERROR: " ,err_list[ 0 ]) exit( 1 ) break ssh.close() return result except Exception as e: print ( 'ssh %s@%s: %s' % (username, host, e)) |
从服务器下载文件
1 2 3 4 5 6 7 8 9 10 11 12 13 | def ssh_get_file(host, username, passwd, remotepath, localpath): import paramiko try : ssh = paramiko.Transport(host) # 建立一个连接对象 ssh.connect(username = username, password = passwd ) sftp = paramiko.SFTPClient.from_transport(ssh) sftp.get(remotepath, localpath) sftp.close() except Exception as e: print ( 'Get data from %s@%s:%s, %s' % (username, host, remotepath, e)) |
上传文件到服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 | def ssh_upload_file(host, username, passwd, localpath, remotepath): import paramiko try : ssh = paramiko.Transport(host) # 建立一个连接对象 ssh.connect(username = username, password = passwd ) sftp = paramiko.SFTPClient.from_transport(ssh) sftp.put(localpath, remotepath) sftp.close() except Exception as e: print ( 'Get data from %s@%s:%s, %s' % (username, host, localpath, e)) |
文中可能存在描述不正确,欢迎大神们指正补充!
感谢阅读,如果觉得对你有帮助,就在右下角点个赞吧,感谢!
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
分类:
08. Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)