Linux学习笔记如何发布一个简单网站一expect脚本实现交换机批量配置(九)

python脚本批量配置华为华三交换机(telnet方式) 阅读详情

   上一节笔者完成了NTP服务器的搭建,并通过对交换机的配置在客户端完成了时间校准。但是同时遇到了一个很严重的问题,笔者专网中有上百台网络交换机,每个交换机都要同步ntp产生的重复劳动简直让笔者想拿头撞墙。但需求永远在推进技术学习,秉持着想尽办法偷懒的态度,笔者准备通过一小段代码来对网络内交换机进行ntp server的配置。

        整理一下现状:1.交换机都处于专网中,笔者的服务器均可以直接访问,无需代理设备;2.几乎所有的交换机型号相同,也就是说完成ntp的配置指令相同;3.所有交换机密码相同;4.所有设备都可以telnet管理,端口均是默认端口,唯一的区别就只有设备IP地址。

        那笔者的思路就比较清楚了,首先有个指令配置的模板,其中包含了设备登陆、密码输入、配置指令及保存退出。其次定义一个IP地址的表单,对表单内的IP地址进行配置模板的重复执行。

        对于linux系统而已,大多数简短脚本都会采用bash来进行编写,而笔者之前尝试过expect脚本编写,感觉这个脚本语言对于初学者相对比较友好,因此这节笔者就通过expect来进行功能实现。

        登陆服务器,首先看一下服务器是否有bash和expect:

        yum list installed | grep bash

        yum list installed | grep expect

        看到系统是自带bash组件,但没有expect,继续按照以往的方式进行软件安装:

        yum list | grep expect

        yum install expect.x86_64

        完成软件安装。

        查看一下yum把expect安装到了哪里:

        whereis expect

        熟悉一下文件安装的路径。

        下面笔者开始一个初始化脚本的编写,进入文件夹

        cd /var

        笔者来新建一个文件夹用于储存和管理脚本

        mkdir expect

        进入笔者新建的文件夹

        cd ./expect

        开始创建第一个shell文件

        vi telnet.sh

        编程语言第一步就是声明语言,结合之前笔者看到的安装路径:

        #!/usr/bin/expect

        设置超时时间为3秒:

        set timeout 3

        继续随便找一台交换机进行测试:比如10.150.103.61,测试之前呢,笔者也先不拿ntp的相关配置来做操作,毕竟时间看起来比较麻烦。笔者用最简单、直观可见的方式--修改交换机的名称来测试:

        插入一部分,编程的同时笔者先梳理一下交换机改名字的配置思路。

        第一步telnet 10.150.103.61

        执行之后呢,交换机就需要输入密码,为了方便测试脚本笔者改为了简单好记的123456

        输入密码之后呢,H3C交换机改个用户名两条简单指令:

        system-view

        sysname hbaitest1

        保存退出:

        quit

        save

        y

        y

        最后quit退出,就结束了~

        如上交换机的配置指令已经梳理清楚了,那就开始脚本配置:

        脚本配置的轻松愉快啊,spawn即是执行了telnet的指令,之后expect会匹配密码的输入,完整匹配字符应该是“Password:”前后两个*表示字符“assword”前后匹配任意字符,这样就匹配到了输入密码的界面。

        后面的异常轻松,送密码啊送指令啊,送完了之后interact脚本结束。

        wq!

        保存退出,下面笔者迫不及待的尝试一下脚本的效果,运行之前笔者先登录这台交换机设备,把它修改为原来的名字:hbai1

        切换回服务器,执行脚本。

        ./telnet.sh

        提示权限不够。直接给文件夹/var/expect赋予读写执行权限

        chmod –R 777 /var/expect

        继续运行脚本

        ./telnet.sh

        再看一下交换机,名字已然变成了笔者修改过后的新名字。简简单单的脚本执行完成了。

        执行完成后继续把名字修改回来

        笔者最初的目的达成了,可以通过脚本自动修改交换机名称,但是由于脚本是固定的IP地址(spawn telnet 10.150.103.61)无法做到修改多个设备。下一步,笔者就在上述脚本的基础上进行优化设置。

        一、增加输入,使得IP地址不再固定;

        常见脚本的输入方式大约分为两种,一种是交互式的,可以手动输入,不过一旦输入内容很多,输入变量也会变成一件非常繁琐的事情;另一种方便的方式就是新建一个文件,把所有需要管理的IP地址都加入其中。然后自动读取文件执行就可以了。

        很明显在笔者现有的应用场景下,第二种方式比较简便,笔者只需要把所有的交换机IP地址贴出来就可以了,思路上呢,就是首先读取文件第一行IP地址,telnet进行连接,执行交换机修改的命令;读取文件第二行IP地址…………直到读取文件结束。很清晰,一个循环操作。

        首先笔者新建一个文件来存储IP地址:

        vi ip.txt

        输入几个测试的IP地址

        笔者新建一个脚本来测试下循环:

        vi read.sh

        设置读取文件位置和操作:setf [open ip.txt]

        执行一个循环while:while {1}

        读取字符串并写入line变量中set line [gets $f]

        输出变量:puts “ipaddress is : $line”

        判断变量是否为空,文件读取结束:    if {[eof $f]} {  close $f break  }

        成功完成后输出提示:successful

        这样一个简单的循环脚本就完成了,笔者执行一下脚本来看看运行结果:

        ./read.sh

        不错~输入结束,结果很理想。下面笔者要做的就是整合之前完成的两个脚本,一边读取IP地址,一遍执行笔者想要的配置操作。

        二、增加循环,使得脚本可以对多个设备执行命令。

        回顾一下循环的思路:

        1.读取文件;2.执行循环;3.读取字符串写入变量;4.输出变量;5.变量为空循环结束。

        回顾一下交换机配置更改的思路:

        1>telnet一个IP地址;2>在输入密码界面输入密码;3>执行命令;4>保存退出。

        思路上就是将循环中的“4.输出变量”替换为“1>--4>交换机配置更改”,这样就轻松愉快的结束了。

        开始操作,将循环脚本read.sh复制为modify.sh

        cp read.sh modify.sh

        编辑脚本:vi modify.sh

        将第四条输出ip地址替换为telnet.sh脚本中的命令修改配置:

        完整脚本如上。

        找个测试环境,笔者把ip.txt的地址替换为可以访问的交换机地址:vi ip.txt

        登陆这两台设备:

        执行脚本:./modify.sh

        等待脚本执行完成后,回到这两台交换机的管理界面,发现交换机名字已经批量修改了~

        到这里为止,笔者的执行脚本已经完成啦,以后的批量作业只需要将指令保存到脚本之中,并且维护交换机ip地址列表ip.txt就可以一键修改了~

        可以看到,一个功能性脚本最重要的就是理清思路,知道分几步完成,每步该做什么;同样对于一个复杂的步骤可以将其拆解出来,单独使用一个脚本进行实现,最后再进行脚本的整合。每个复杂脚本基本上基于输入、输出、变量、运算符、注释、流控制来进行的,逻辑思路非常重要。


        最后的最后,笔者优化一下了脚本。参考之前的ip地址列表,笔者将地址单独出了一个文件以便修改。同样,笔者将需要执行的命令也单独出来一个文件,命名为command.txt。考虑到笔者最初的目的,将配置指令修改为上一节NTP相关配置。三个文件如下所示:

        ip.txt

        command.txt

        modify.sh

        利用如上脚本和两个文件就可以实现网络设备的批量telnet和ssh管理啦~

转自:https://www.jianshu.com/u/0d31bfec82e7
交换机批量巡检、配置软件 可以查看mac地址是否漂移或者欺骗、ip地址与MAC对应关系,可以查看是否有环路,可以查看CPU状态等等。使用Python3.8实现,支持huawei\h3c\cisco三种交换机批量巡检或者批量配置。要求:同一种类型的交换机有相同的登录账号和密码,开启ssh服务。 阅读详情

相关推荐

【原创】华为交换机配置脚本

但,本人之前编写过一个可以运行在SecureCRT中的VBScript的也不错,唯一遗憾的是SecureCRT对python的支持还是比较弱的。使用脚本配置的话,可以大大减轻网络管理员的工作量。当然,编写脚本的能力呢,必须具备。这样,每次配置交换机的时候,只需修改一些参数,然后在SecureCRT中运行一下就好。编写脚本,你可以有很多种选择,尤其当前python最为火热,可以优先考虑。这里,我用VBScript为例,来创建一个配置交换机的脚本。最后定义一个Main函数,用来调用这些函数,对交换机进行配置。

赵庆明老师 2695

python配置多台交换机_Python在自动化运维中的应用之批量配置交换机-Go语言中文社区...

最近在学习Python语言,想着通过一些实际应用来学习可以回事理解,所以想到批量配置管理企业内部的思科交换机。python是一门解释性语言比较高级有很多的基础库和第三方开发库,现在开发环境也比较热门。环境:centos7客户端 + 思科cisco交换机目的:批量管理配置交换机,先将所有交换机通过telnet开启配置ssh,而后通过ssh方式远程批量管理交换机.【遇到故障交换机跳过执行下面配置】1....

weixin_39599097的博客 1375

如何通过Shell脚本,批量配置路由器或交换机配置

首先,获取路由器或交换机设备的IP清单以及telnet管理账号、密码。 然后把路由器或交换机设备IP可以做一个1.txt文件,如下: 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 1.1.1.1 5.5.5.5 192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.104 192.168.1.105 192.168.1.106 我这里模拟做个批量开启交换机FTP的过程,建立 ftp.sh 脚本如下: #!/bin/bash.

lei_ty的博客 4248

零基础入门漏洞挖掘:从Web安全基础到实战挖洞全流程指南

网络安全的核心在于识别和修复软件中的安全缺陷,即漏洞。其基本原理在于软件在开发过程中,因逻辑疏忽、编码错误或配置不当,会引入可被利用的弱点。掌握漏洞挖掘技术,对于构建更安全的数字环境具有重要价值,广泛应用于企业安全防护、渗透测试和漏洞众测等领域。本文聚焦于Web应用安全,深入探讨SQL注入、XSS等常见漏洞的成因与利用方式,并系统介绍从信息收集、漏洞探测到报告编写的完整实战流程。通过理解HTTP协议、前端交互等基础概念,并借助Kali Linux、Burp Suite等工具在DVWA等靶场中进行练习,即使是

chulilang8944的博客 410

Python在自动化运维中的应用之批量配置交换机

最近在学习Python语言,想着通过一些实际应用来学习可以回事理解,所以想到批量配置管理企业内部的思科交换机。 python是一门解释性语言比较高级有很多的基础库和第三方开发库,现在开发环境也比较热门。 环境:centos7客户端 + 思科cisco交换机 目的:批量管理配置交换机,先将所有交换机通过telnet开启配置ssh,而后通过ssh方式远程批量管理交换机.【遇到故障交换机跳过执行下...

漫步技术小栈的博客 1万+

100台新交换机如何实现批量配置?

在深入技术细节之前,我们先来聊聊为什么要批量配置。手动配置一台交换机看似简单:通过终端登录,输入几行命令,保存,搞定!但当任务升级到100台时,问题就来了。😓显然,手动配置在大规模网络部署中完全不现实。而批量配置通过自动化手段,可以一次性搞定所有设备,不仅省时省力,还能大幅降低出错率。接下来,我们就看看有哪些“神器”能帮我们实现这个目标!😎。

网络技术联盟站 438

Java最高频八股文速通

final 类:String 类被声明为 final,这意味着它不能被继承,从而防止了通过继承改变其行为。final 字段:String 类中的 value 字段是 final 的,这保证了 String 对象在创建后其内部字符数组不会被改变。没有提供修改方法:String 类没有提供任何可以修改其内容的方法。所有对 String 的操作(如拼接、替换等)都会生成一个新的String 对象。

qq_43751506的博客 6395

【信息科学与工程学】【安全领域】 第八十八篇 网络空间安全21

如果员工认为安全政策和流程(如复杂的密码规则、频繁的认证、繁琐的软件安装审批)阻碍了工作效率,他们可能会寻找变通方法,例如:写下密码、共享账户、使用未经批准的云服务(影子IT)、绕过安全控制。例如,一个用于显示用户列表的API,可能返回每个用户的完整个人资料,包括邮箱、地址、电话等敏感字段,而前端可能只显示了姓名。:在OAuth 2.0或OIDC流程中,攻击者可能截获授权请求中的“授权码”,或窃取“访问令牌”,然后将其用于另一个客户端(非原始授权的客户端),从而以用户身份访问受保护的资源。

weixin_49199313的博客 444

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3483

批量配置交换机:自动化管理与实践

批量配置交换机,顾名思义,是指在短时间内对多台交换机设备进行统一配置的过程。这项技术常用于网络设备初始化、更新配置文件、变更网络策略等场景。通过批量配置,网络管理员可以显著提高工作效率,降低因手动配置而导致的错误率和人力成本。在选择合适的网络配置管理器时,首要考虑的是该工具的功能是否满足组织的需求,以及其是否能够与现有的网络设备兼容。功能性评估包括了解管理器是否支持所需的所有网络设备品牌与型号、配置文件的版本控制、备份与恢复、变更控制流程以及安全策略的集成等。

weixin_42181686的博客 1823

线下批量配置交换机脚本.zip

交换机开局批量生成配置脚本工具。适用于网络项目刚刚开局,需要配置很多交换机,现在只需要写一份配置即可生成所有交换机配置,几分钟轻轻松松搞定。

WebSocket安全实战:防御物流系统中的中间人攻击与钓鱼威胁

WebSocket作为一种支持全双工通信的网络协议,在现代Web应用中广泛用于实现实时数据推送、在线聊天和状态跟踪等功能。其工作原理是在单个TCP连接上建立持久通道,允许服务器与客户端之间进行低延迟的双向数据交换。这一技术价值在于极大提升了应用的实时交互体验,尤其在物流跟踪、金融交易和协同编辑等场景中不可或缺。然而,如果缺乏足够的安全加固,WebSocket通信可能暴露严重风险。攻击者利用中间人攻击手段,可在通信链路中窃听甚至篡改明文或弱加密的WebSocket流量,进而实施精准的业务逻辑攻击,例如在物流状

weixin_30660027的博客 377

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

【物联网原理与应用】实验三:RFID低频卡实验——门禁系统

m0_74164458的博客 4000

expect批量配置交换机

因为日常维护交换机上千台,考虑到定期需要配置和备份交换机。自动配置交换机的的方式大概这么几种:1、使用crt调取vbs脚本语言;2、ansible自动化平台;3、expect工具;4、新版本的交换机可配置定期备份命令。第一种方式使用过,比较简单,缺点crt软件收费;ansible平台需要一定时间需要配置;考虑管理的交换机较为老旧,本次采用expect工具。前期准备1)cento...

XiaoMa_Ge2019的博客 770

OpenClaw记忆插件升级实战:从memory-lancedb-pro安装到AgentSkill封装

向量数据库作为现代AI应用的核心基础设施,通过将非结构化数据转换为高维向量并利用相似度检索实现语义理解。其原理基于嵌入模型生成向量表示,结合近似最近邻搜索算法实现高效查询。这项技术为智能体系统提供了长期记忆和上下文感知能力,显著提升了对话连贯性与任务执行效率。在AI智能体开发领域,向量数据库常用于知识库构建、对话历史管理和个性化推荐等场景。本文聚焦OpenClaw框架中memory-lancedb-pro插件的部署实践,针对**插件加载顺序**和**Apache Arrow依赖**两大常见痛点,通过封装成可

weixin_42525482的博客 638

使用RepeatModeler和RepeatMasker注释基因组重复序列

重复序列注释有两种常用策略,基于同源序列相似性和基于重复序列结构特征。RepeatMasker是基于同源序列相似性注释序列的常用工具, RepeatModeler可用来从头对基因组的重复序列家族进行建模注释,它的核心组件是RECON和RepatScout。 这篇教程介绍如何使用RepeatModeler从头鉴定基因组的重复序列,之后用RepeatMasker根据自...

xuzhougeng blog 8850

华为交换机配置脚本

Switch] observe-port 1 interface-range gigabitethernet 1/0/4 gigabitethernet 1/0/5 //批量配置GE1/0/4~GE1/0/5为本地观察端口。log日志日期格式精确到毫秒。trap 日期格式精确到毫秒。[Switch-GigabitEthernet1/0/2] port-mirroring to observe-port 1 both //将接口GE1/0/2的出入方向绑定到索引为1的观察端口上。

normanhere的博客 2483

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

交换机配置自动化脚本

1.右击“SCW.PY”脚本,选择“Edit with IDLE"-->"Edit with IDLE 3.10 (64-bit)"4.登录虚拟机”192.168.255.84“,登录方式为SSH,账号root 密码 XXXXXX。2.在打开的编辑器中,选择”Run"-->"Run Module"3.等待脚本自动运行,运行完毕后会显示“备份完成,耗时:XXX秒"5.按路径“/usr/local/tftpboot"找到该目录。6.选择刚备份过来的交换机配置文件,可全选,点击下载按钮。

weixin_71005603的博客 4591

RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling Overview of RRAM Physical Mechanism A general picture for the filamentary switching mechanism. Forming: 对本征RRAM样本,加电压VformingV_{forming}Vforming​,中间氧化层的O

Blog of Lucky H6 991

SD--根据订单创建出库单(相关的函数列表的介绍系列篇(2))

创建订单样例代码参见:http://blog.youkuaiyun.com/CompassButton/archive/2007/05/09/1601712.aspx 可以根据一个订单或者部分订单项来创建出库单,代码如下:* Populating the item data lx_sales_item-ref_doc = l_vbeln. lx_sales_item-ref_item = c_000010

SAP BLOG--Jack Wu 6226

锐捷交换机配置脚本

Switch1(config-vsl-port)# port-member interface TenGigabitEthernet 2/1 ------>配置VSL链路。Switch2(config-vsl-port)# port-member interface TenGigabitEthernet 2/1 ------>配置VSL链路。Switch1# switch convert mode virtual ------>转换为VSU模式。

normanhere的博客 2236

YOLOv8【第九章:模型部署篇·第2节】一文搞懂,模型剪枝与压缩技术!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1525

shell脚本操作交换机_expect脚本实现交换机批量配置

整理一下现状:1.交换机都处于专网中,笔者的服务器均可以直接访问,无需代理设备;2.几乎所有的交换机型号相同,也就是说完成ntp的配置指令相同;3.所有交换机密码相同;4.所有设备都可以telnet管理,端口均是默认端口,唯一的区别就只有设备IP地址。那笔者的思路就比较清楚了,首先有个指令配置的模板,其中包含了设备登陆、密码输入、配置指令及保存退出。其次定义一个IP地址的表单,对表单内的IP地址进...

weixin_42613505的博客 4504

156、手机摄像头模组结构拆解:从保护盖到 FPC 连接器的完整装配剖面

本文深入解析手机摄像头模组结构设计要点。作者结合项目经验,指出保护盖密封胶在低温收缩会导致边缘漏光问题,强调结构细节比算法参数更关键。文章逐层拆解模组组件:保护盖厚度需平衡抗冲击与光学性能;镜筒内镜片组装配顺序和公差控制直接影响成像质量;IR滤光片厚度公差±0.02mm会改变红外截止波长;CSP封装需注意金线加固;FPC连接器的信号完整性和机械可靠性设计。最后给出5条实用建议,包括密封胶选型、镜片对位检测等,强调模组结构设计是"一票否决制"的基础工程。(149字)

sundong_81的博客 105

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Linux学习笔记如何发布一个简单网站一DHCP trouble shooting(七)
下一篇: Linux学习笔记如何发布一个简单网站一搭建一台NTP Server (八)
白马非马啊
博客等级 码龄10年 13粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值