ChatGPT 教我写一个基于python程序开发的网络设备巡检功能
这几天被ChatGPT玩坏了,为什么说是被玩呢,这东西真的太强大了,我现在用的还是版本3就专业溜了,现在已经有版本4了,详细一些人工智能真的还快就会取代一大批只会CV程序员,所以你有什么理由不学习呢。
我觉得以后这随便都可以直接从ChatGPT上提要求然后搬运过来就是了,都可不用写了
方法一

编写一个自动化网络设巡检python程序
为了编写一个自动化网络设备巡检的Python程序,你需要遵循以下步骤:
- 导入必要的库和模块。这些可能包括 Paramiko、Netmiko、Ping、Requests 等。例如:
pythonCopy codeimport paramiko
from netmiko import ConnectHandler
import subprocess
import requests
- 创建连接到设备的函数。这可以是 SSH 连接或 Telnet 连接,具体取决于设备和网络的配置。例如,使用 Paramiko 连接 SSH 设备的示例代码如下:
pythonCopy codedef ssh_connect(host, port, username, password):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)
return ssh
- 创建设备巡检函数。这将检查设备的各种参数,如 CPU 使用率、内存使用率、接口状态等等。这可能需要使用 Netmiko 或其他类似的模块来执行命令和获取输出。例如:
pythonCopy codedef device_check(ip, username, password):
device = {
'device_type': 'cisco_ios',
'ip': ip,
'username': username,
'password': password,
}
net_connect = ConnectHandler(**device)
cpu = net_connect.send_command('show processes cpu sorted | exclude 0.00%CPU')
memory = net_connect.send_command('show processes memory sorted | exclude 0.00%')
interfaces = net_connect.send_command('show ip interface brief | exclude unassigned')
net_connect.disconnect()
return cpu, memory, interfaces
- 创建发送邮件的函数。这将使用 Python 的内置 smtplib 库发送邮件。例如:
pythonCopy codeimport smtplib
from email.mime.text import MIMEText
def send_email(from_addr, to_addr, subject, body, smtp_server, smtp_port, username, password):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_addr
msg['To'] = to_addr
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.login(username, password)
server.sendmail(from_addr, to_addr, msg.as_string())
- 将上述函数组合到一个主函数中,该函数将遍历设备列表并对每个设备执行巡检。例如:
pythonCopy codedef main():
devices = [
{
'ip': '192.168.1.1',
'username': 'admin',
'password': 'password',
},
{
'ip': '192.168.1.2',
'username': 'admin',
'password': 'password',
},
{
'ip': '192.168.1.3',
'username': 'admin',
'password': 'password',
},
]
for device in devices:
cpu, memory, interfaces = device_check(device['ip'], device['username'], device['password'])
if cpu > 80 or memory > 80:
send_email('from@example.com', 'to@example.com', 'Device Alert', f'Device {device['ip']} is experiencing high CPU or memory usage.', 'smtp.example.com', 587, 'username', 'password')
这是一个简单的框架,
方法二

网络设备巡检用python编写一个自动化程序
以下是一个简单的网络设备巡检自动化程序的 Python 代码示例,可以用于检查网络设备的基本配置和状态信息:
复制import paramiko # 定义设备列表
devices = [
{
"hostname": "192.168.1.1",
"username": "admin",
"password": "password",
"port": 22
},
{
"hostname": "192.168.1.2",
"username": "admin",
"password": "password",
"port": 22
}
] # 定义命令列表
commands = [
"show version",
"show interfaces",
"show ip route"
] # 遍历设备列表
for device in devices:
# 创建 SSH 客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接设备
client.connect(
hostname=device["hostname"],
username=device["username"],
password=device["password"],
port=device["port"]
) # 遍历命令列表
for command in commands:
# 执行命令
stdin, stdout, stderr = client.exec_command(command) # 输出命令结果
print(f"Device: {device['hostname']}, Command: {command}")
print(stdout.read().decode()) # 关闭 SSH 连接
client.close()
上述代码使用 Paramiko 库连接到设备并执行命令。在实际使用中,可以根据需要添加更多的命令和设备信息。此外,还可以使用其他 Python 库来解析命令输出并提取有用的信息,例如使用正则表达式或 Beautiful Soup 库来解析 HTML 输出。
ChatGPT 教我写一个基于python程序开发的网络设备巡检功能的更多相关文章
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- 微信小程序——手把手教你写一个微信小程序
前言 微信小程序年前的跳一跳确实是火了一把,然后呢一直没有时间去实践项目,一直想搞但是工作上不需要所以,嗯嗯嗯嗯嗯emmmmm..... 需求 小程序语音识别,全景图片观看,登录授权,获取个人基本信息 ...
- 教你如何使用Java手写一个基于链表的队列
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...
- python学习(10)字典学习,写一个三级菜单程序
学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...
- 半个小时教你写一个装(bi)逼(she)之地图搜租房
半个小时教你写一个装(bi)逼(she)之地图搜租房 首先需要一个Python3环境,怎么准备我就不多说了,实在不会的出门右转看一下廖雪峰老师的博客. HTML部分 代码来自:高德API+Python ...
- psutil一个基于python的跨平台系统信息跟踪模块
受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...
- 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */
namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...
- 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发
''' 写一个基于TCP协议套接字,服务端实现接收客户端的连接并发 ''' client import socket import time client = socket.socket() clie ...
- 【vps】教你写一个属于自己的随机图API
[vps]教你写一个自己的随机图API 前言 刚刚开始使用halo博客的时候,我就发现halo博客系统是可以使用随机图当背景的,所以也是使用了网上一些比较火的随机图API. 在上次发现了各种图片API ...
随机推荐
- 开发一个微信小程序流程及需要多少费用?
流程如下: 小程序是一种新的开放能力,开发者可以快速地开发一个小程序.小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 开放注册范围:个人 企业 政府 媒体 其他组织 1.注册 在微信公 ...
- .NET周刊【7月第1期 2024-07-07】
国内文章 学习.NET 8 MiniApis入门 https://www.cnblogs.com/hejiale010426/p/18280441 MiniApis是ASP.NET Core中的轻量级 ...
- git fetch origin
可以运行 git fetch origin 来同步远程服务器上的数据到本地.该命令首先找到 origin 是哪个服务器(本例为 git.ourcompany.com),从上面获取你尚未拥有的数据,更新 ...
- 可视化—gojs 超多超实用经验分享(三)
目录 32.go.Palette 一排放两个 33.go.Palette 基本用法 34.创建自己指向自己的连线 35.设置不同的 groupTemplate 和 linkTemplate 36.监听 ...
- [oeasy]python0014_二进制_binary_bin
二进制(binary) 回忆上次内容 上次我们了解了ASCII码表 ASCII 码表就是 American Standard Code for Inf ...
- 推荐几款.NET开源且功能强大的实用工具,助你提高工作开发效率!
前言 俗话说得好"工欲善其事,必先利其器",今天大姚给大家推荐8款.NET开源且功能强大的实用工具,助你提高工作开发效率! DevToys 一款基于C#开源(MIT License ...
- 人脸识别项目打包成exe的过程遇到的问题
我最近重新拾起了计算机视觉,借助Python的opencv还有face_recognition库写了个简单的图像识别demo,额外定制了一些内容,原本想打包成exe然后发给朋友,不过在这当中遇到了许多 ...
- win10安装和使用wireshark
win10安装和使用wiresharkhttps://blog.csdn.net/qq_34732729/article/details/105126146https://blog.csdn.net/ ...
- 【MongoDB】Re05 分片集群(Win平台搭建)
分片副本集1 (3实例) 主1 从1 裁1 分片副本集2 (3实例) 主1 从1 裁1 配置副本集(3实例) 主1 从2 路由(2配置) 用Windows平台搭建 配置目录设置: ├─config ...
- 【Tutorial C】04 基本输入输出
输出单个字符 putchar('a'); // 字符输出函数,其功能是在终端(显示器)输出单个字符. putchar('\n'); // 支持转义换行 putchar(77); // 可以直接注入AS ...