- 1. 项目需求
- 2. netmiko的安装
- 3. 程序源代码
- 4. 项目封装
工厂的10台AGV小车,经常在某个地方停线,不再运动,需要监控AGV小车的在线情况。查看当前状态下AGV小车连接的具体是哪一个无线AP。
通过资料查询可以采用python 的netmiko扩展包实现思科WLC的连接。
因为netmiko通过pycharm的setting安装失败,因此需要通过pip install命令直接安装到虚拟环境中。
pip install netmiko --target C:Usersadmin_zhougaPycharmProjectsWLCReadvenvLibsite-packages3. 程序源代码
#! /user/bin/python
# author Gang ZHou
# date 2022-07-28
# version 1.0
# 功能介绍:
# 1. 项目通过netmiko扩展包通过ssh的方法连接思科WLC无线控制器。
# 2. 通过netmiko建立连接之后,每5s获取一次WLC中客户端的连接情况。
# 3. 将WLC的连接情况保存到文件中,根据日期,每天创建一个新的文件。
from netmiko import ConnectHandler
import time
import sys, datetime, os
def telnetWLC():
# 定义一个wlc的连接字典。port 22是ssh的连接端口
wlc = {
# 'device_type': 'cisco_ios',
'device_type': 'cisco_wlc_ssh',
'host': '192.168.18.253',
'username': 'cisco',
'password': 'admin@123',
'port': 22
}
# 通过connectHandler函数建立一个WLC的连接,注意在连接字典前面有两个**。
with ConnectHandler(**wlc) as ch:
while True:
# 构建一个以日期开头的文件名,防止文件太大无法而影响系统效率
filename = 'WLC' + str(datetime.datetime.now().date()) + ' ' + 'logping.txt'
# 休眠5秒钟
time.sleep(5)
# 判断文件是否存在,文件存在就以追加的方式写入数据,如果文件不存在就创建文件,并向其中写入数据。
if os.path.exists(filename):
with open(filename, 'a', encoding='utf-8') as wfile:
# 写入时间信息,以判断是何时读取的数据
wfile.write(datetime.datetime.now().strftime("%Y-%m-%d, %H:%M:%S"))
# 想WLC连接中发送命令‘show client summary ip’ 查询WLC中所有的客户端,并且包含IP地址。然后将返回的信息写入到文件中。
wfile.write(ch.send_command("show client summary ip"))
else:
with open(filename, 'w', encoding='utf-8') as wfile:
wfile.write(datetime.datetime.now().strftime("%Y-%m-%d, %H:%M:%S"))
wfile.write(ch.send_command("show client summary ip"))
if __name__ == '__main__':
telnetWLC()
4. 项目封装
项目代码封装需要使用到一个模块PyInstaller.使用之前需要安装该模块。
在cmd命令行中执行以下代码。
pip install PyInstaller
项目打包需要在cmd命令行中输入命令进行打包。
pyinstaller -F C:Usersadmin_zhougaPycharmProjectsWLCReadWLCRead.py
-F 表示将文件打包为一个exe文件
打包生成的exe文件路径在倒数第二行,默认存放在用户家目录的dist文件夹中。



