设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 4271|回复: 36
收起左侧

用Python写SecureCRT批量登录/巡检网络设备脚本

[复制链接]
发表于 2023-1-17 14:33:22 | 显示全部楼层 |阅读模式
因为有约200台的网络设备需要每天登录巡检、查看配置、保存配置、定期更改密码(每周改一次),如果都手动去登录、配置将是非常耗费时间和人力的,所以就有了整理出脚本的想法。查看了网上大多是VBS编写的脚本,我对VBS不熟悉,刚好前段时间初步学习了Python,就想用Python整理一些自己需要的脚本。

提示:以下是本篇文章正文内容(来自网络技术干货圈),下面案例可供参考
一、脚本主要功能
  • 自动的逐台登录设备,并执行相关命令;
  • 记录屏幕输出并保存到TXT文件中,将TXT文件以设备名、设备IP、时间命名。
二、脚本示例# $language = "python"# $interface = "1.0"import timeimport osimport csvuser = 'admin'passwd = 'huawei@123'# 定义一个变量,名为current_time,把当前PC的时间格式化后赋值给该变量current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))def main():# 设置CRT的屏幕同步属性为False。具体作用自行百度。    crt.Screen.Synchronous = False# 通过with open打开ip.txt文件,获取文件中的所有IP地址。txt文件中一个IP占用一行。    with open('ip.txt', 'r') as rfile:        host_list = rfile.readlines()        for host in host_list:# 由于readlines()方法在获取txt中的IP时,会把换行符读取出来,赋值给host_list变量时IP地址后边跟了“\r”导致CRT无法读取争取的IP,所以使用split()方法分割字符串,获取正确的IP地址信息。            cmd = '/SSH2 /L %s /PASSWORD %s /C 3DES /M MD5 %s' % (user, passwd1, host.split()[0])            crt.Session.ConnectInTab(cmd)            time.sleep(1)            crt.Screen.Send('\r')            crt.Screen.Send('\r')            crt.Screen.WaitForString('>')# 把log_name()函数的值赋给current_name这个变量。            current_name = log_name()            time.sleep(1)# 给txt文件命名。            crt.Session.LogFileName = current_name + "_" + host.split()[0] + "_" + current_time + "_log.txt"            crt.Session.Log(True)            time.sleep(1)            crt.Screen.Send('\r')            crt.Screen.WaitForString('>')            crt.Screen.Send('display cur \r')# 因为会有很多遇到more的情况,而我们又无法确定要输入几次空格,所以通过while循环中的条件判断,实现不同情况的处理。            while True:                crt.Screen.WaitForStrings(["  ---- More ----", '<bj'])                # 在这里crt.Screen.WaitForStrings根据匹配到的字符返回一个位置值,从1开始,例如匹配到第二个字符串就返回2。                # 而crt.Screen.MatchIndex就是这个返回值。在匹配字符的时候可能会由于别处出现该字符导致匹配不到我们的目标字符,使脚本运行失败,                # 此时可以在if判断语句中使用crt.Dialog.MessageBox()弹出消息,告知我们在哪里匹配到了字符,当做python内的print来使用。                waitindex = crt.Screen.MatchIndex                if waitindex == 1:                    # crt.Dialog.MessageBox('  ---- More ----')                    time.sleep(1)                    crt.Screen.Send(' ')                elif waitindex == 2:                    # crt.Dialog.MessageBox('>')                    time.sleep(1)                    crt.Screen.Send('\r')                    break            crt.Screen.Send('\r')            crt.Screen.Send('\r')            crt.Screen.WaitForString('>')            crt.Screen.Send('display ip inter brie \r')            crt.Screen.Send('\r')            crt.Screen.Send('\r')            crt.Screen.WaitForString('>')            crt.Screen.Send('quit\r')            time.sleep(3)def log_name():    # 定义一个还书获取屏幕当前设备名称    rowIndex = crt.Screen.CurrentRow    colindex = crt.Screen.CurrentColumn - 1    chushi_name = crt.Screen.Get(rowIndex, 1, rowIndex, colindex)    name = chushi_name.strip('<>')    return namemain()

需要下载NA和IP题库合集、模拟器安装包、实验配置等学习资源。
添加太阁老师个人微信领取:
太阁免费视频课程资料、
NA综合实验配置文件拓扑图及模拟器、
太阁独家实验手册、网工必读书籍!!



游客,如果您要查看本帖隐藏内容请回复
游客,如果您要查看本帖隐藏内容请回复

发表于 2023-1-17 14:45:57 | 显示全部楼层
感謝大大分享資訊

点评

哈哈 不客气喔  详情 回复 发表于 2023-1-18 14:49
沙发 2023-1-17 14:45:57 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-18 14:49:10 | 显示全部楼层
ilancmc 发表于 2023-1-17 14:45
感謝大大分享資訊

哈哈 不客气喔
地板 2023-1-18 14:49:10 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-3-27 17:21:12 | 显示全部楼层
下载看看,学习学习
8# 2023-3-27 17:21:12 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-3-29 16:45:03 | 显示全部楼层
感谢辉哥分享
9# 2023-3-29 16:45:03 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-4-20 15:18:27 | 显示全部楼层
过来学习哈
11# 2023-4-20 15:18:27 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-10-7 15:24:46 | 显示全部楼层
看看大佬的分享
12# 2023-10-7 15:24:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-10-7 15:31:48 | 显示全部楼层
学习下 谢谢了
13# 2023-10-7 15:31:48 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2023-10-14 22:18:23 | 显示全部楼层
感謝大大分享資訊
15# 2023-10-14 22:18:23 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-11-21 20:08 , Processed in 0.070265 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表