python中Paramiko的SSH怎么用
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,这篇文章将为大家详细讲解有关python中Paramiko的SSH怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。说明1、将所有设备信息写入文本文档。简单地使用
千家信息网最后更新 2025年11月16日python中Paramiko的SSH怎么用
这篇文章将为大家详细讲解有关python中Paramiko的SSH怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
说明
1、将所有设备信息写入文本文档。
简单地使用txt,将登录信息构建成字典。
2、初始化SSH连接和执行命令。
3、分析此需求指定的命令和输出结果。
将结果存储在文件中。
4、增加多线程执行。
提高效率。
5、添加Linux的crontab。
每小时收集一次信息(服务器配置)
实例
#!/usr/bin/env python# -*- coding:utf-8 -*-import reimport timefrom concurrent.futures import ThreadPoolExecutorimport paramiko def get_device_list(filename): """从文本文件读取设备列表,返回由字典组成的列表。 文本内容格式为:ip,用户名,密码,别名,例如: 1.1.1.1 admin admin sw1 1.1.1.2 admin admin sw2 ...... Args: filename ([str]): 文件名称 """ with open(filename, 'r') as f: device_list = [] for line in f.readlines(): ip, username, password, name = line.strip().split() device_list.append( { "ip": ip, "username": username, "password": password, "name": name, } ) return device_list class NetworkDevice(object): def __init__(self, ip="", username="", password="'", name="", port=22,): self.conn = None if ip: self.ip = ip.strip() elif name: self.name = name.strip() else: raise ValueError("需要设备连接地址(ip 或 别名)") self.port = int(port) self.username = username self.password = password self._open_ssh() def _open_ssh(self): """初始化 SSH 连接,调起一个模拟终端,会话结束前可以一直执行命令。 Raises: e: 抛出 paramiko 连接失败的任何异常 """ ssh_connect_params = { "hostname": self.ip, "port": self.port, "username": self.username, "password": self.password, "look_for_keys": False, "allow_agent": False, "timeout": 5, # TCP 连接超时时间 } conn = paramiko.SSHClient() conn.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: conn.connect(**ssh_connect_params) except Exception as e: raise e self.conn = conn.invoke_shell(term="vt100", width=500, height=1000) return "" def exec_cmd(self, cmd, recv_time=3): """登录设备,执行命令 Args: cmd ([type]): 命令字符串 recv_time (int, optional): 读取回显信息的超时时间. Defaults to 3. Raises: EOFError: 没有任何信息输出,说明连接失败。 Returns: output: """ cmd = cmd.strip() + "\n" self.conn.sendall("screen disable\n") self.conn.sendall(cmd) time.sleep(int(recv_time)) output = self.conn.recv(1024*1024) if len(output) == 0: raise EOFError("连接可能被关闭,没有任何信息输出") return output.decode('utf-8', 'ignore') dev = { "ip":"192.168.56.21", "username":"netdevops", "password":"Admin@h4c.com", "name": "sw1"}# sw1 = NetworkDevice(**dev)# ret = sw1.exec_cmd("dis version")# print(ret) def parse_interface_drop(output): """把设备的输出队列丢包信息解析成累加值 命令及输出示例如下: # [H3C]dis qos queue-statistics interface outbound | in "^ Drop" # Dropped: 0 packets, 0 bytes """ ptn = re.compile(r"\s(\S+):\s+(\d+)\s+(\S+),\s+(\d+)\s+(\S+)") count = 0 for i in ptn.findall(output): count += int(i[1]) return count def run(cmd, **conn_parms): """登录单台设备,执行指定命令,解析丢包统计 """ sw = NetworkDevice(**conn_parms) output = sw.exec_cmd(cmd) drop_count = parse_interface_drop(output) return "%s %s %s"%( conn_parms.get("name"), conn_parms.get("ip"), drop_count) # cmd = r'dis qos queue-statistics interface outbound | in "^ Drop"'# ret = run(cmd,**dev)# print(ret) if __name__== "__main__": """获取设备列表,使用多线程登录设备获取信息并返回 """ with ThreadPoolExecutor(10) as pool: futures = [] cmd = r'dis qos queue-statistics interface outbound | in "^ Drop"' dev_info = get_device_list("./iplist.txt") for d in dev_info: future = pool.submit(run, cmd, **d) futures.append(future) # for f in futures: # print(f.result()) # 根据执行时间把结果写入文件,精确到小时 with open("./drops/%s.log"%time.strftime("%Y%m%d_%H"),'w') as f: for line in futures: f.write(line.result() + "\n")关于"python中Paramiko的SSH怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
信息
设备
命令
输出
文件
登录
时间
篇文章
结果
内容
别名
字典
小时
文本
更多
线程
不错
实用
精确
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
防疫期间学生网络安全
山东大专软件开发哪个学校好
软件开发公司购货单
mpp数据库原理及应用
企业邮箱服务器端口
商洛做app的软件开发
删数据库跑路
t4级别数据库是什么
架设局域网服务器设备
阜阳网络安全知识竞答上线
数据库先进的技术
远程服务器需要开启什么
深圳苹果软件开发如何收费
龙与家园有服务器嘛
农批物业管理软件开发多少钱
新桃网络技术有限公司
中学生网络安全教育计划
sql如何将数据库备份到本机
软件开发交流论坛
朝阳区计算机软件开发公司
防疫期间学生网络安全
单机版游戏需要搭建服务器吗
服务器上上传数据
和平精英服务器和客户端区别
北京市公安局网络安全监察
网络安全教育主题的画报
数据库复习题及答案
u8扩展自定义项表数据库
网络安全宣传手抄
迅雷是什么软件开发的