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

STM32硬件SPI驱动ADS1220实战:从零搭建高精度数据采集系统(附避坑指南)

本文详细介绍了使用STM32硬件SPI驱动24位高精度ADC芯片ADS1220的完整实战方案。内容涵盖从硬件设计、CubeMX工程配置、SPI通信底层实现到数据读取策略与性能优化的全流程,并重点分享了多通道切换、噪声抑制等关键避坑指南,帮助开发者构建稳定可靠的高精度数据采集系统。

o4p5q6r7s的博客 450

expect批量配置交换机

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

XiaoMa_Ge2019的博客 770

2.1 跟网型控制原理与局限性

本文深入分析了并网变流器的跟网型(GFL)控制技术及其局限性。GFL控制将变流器视为受控电流源,依赖锁相环(PLL)跟踪电网电压,在强电网下表现良好,但在弱电网中面临严峻挑战。研究发现,当电网短路比降低时,PLL动态与电网阻抗的负交互会导致系统失稳,同时GFL变流器缺乏电压支撑能力和惯量响应能力,在故障时易脱网。相比之下,构网型(GFM)控制具有电压源特性,能自主构建电网电压,更适合弱电网环境。随着新能源占比提高,GFL控制正逐渐被更具主动支撑能力的GFM控制所替代。

技术工作者 996

Transformer模型在语义通信中的实战应用:从信源编码到端到端优化

本文深入探讨了Transformer模型在语义通信中的实战应用,从信源编码到端到端优化。文章分析了Transformer凭借其强大的全局依赖建模能力,如何成为实现高效语义提取与传输的理想架构,并提供了构建可端到端训练系统的具体实现思路与评估方法,旨在为下一代智能通信系统提供技术参考。

o9p0q1的博客 689

华为交换机配置脚本

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

【板栗糖GIS】新装ArcGIS必调的12个隐藏设置——【效率翻倍指南】

本文详细介绍了新装ArcGIS后必调的12个隐藏设置,涵盖性能优化、路径管理、显示调校、工作流定制等方面,帮助用户显著提升GIS工作效率。从关闭后台地理处理到启用硬件加速,再到个性化快捷键配置,这些实用技巧能让ArcGIS运行更流畅,操作更便捷。

weixin_42524945的博客 544

交换机配置自动化脚本

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

STM32使用 jansson 处理 Json格式字符

STM32 Json 字符的创建和解析1、Json简介2、jansson库的下载安装和报错解决2.1、下载安装2.2、STM32工程文件中导入jansson库2.3、报错解决2.4、修改堆栈空间3、Json 字符的创建4、Json 字符的解析4.1 纯键值对4.2、键的值是一个对象4.3、键的值是一个数组   STM32处理json字符串一般不常见,大部分都是不需要处理的数据,但是在一些通信中需要处理上传或者下传的数据,就别比如在物联网中,有一部分数据就是以json格式传输的,那么就需要对数据经行解析。我简

青烨慕容 7417

SECS/GEM协议学习教程

摘要:SECS/GEM是半导体制造设备通信的国际标准,定义了主机系统与设备间的通信规范,包括设备控制、状态监控、数据采集等功能。协议采用分层架构(应用层、消息层、传输层、物理层),支持关键消息类型如S1F13(建立通信)、S2F13(数据采集)等。通信流程涵盖建立连接、数据交换和终止会话,并通过状态变量(SVID)、事件(CEID)等实现实时交互。典型应用包括设备初始化、报警处理及配方管理,需处理数据类型(如U2、A、L)和通信调试问题。

GitHub个人仓库地址:https://github.com/feiyuluoye ; 个人塔罗牌占卜平台:http://118.126.82.12:8080/ ; 欢迎广大Coding友共同交流讨论。 2056

锐捷交换机配置脚本

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

history 历史命令记录功能如何防坏人(高级)

在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作。但是黑客在入侵后,为了抹除痕迹,会删除 .bash_history 文件,这个就需...

墨痕诉清风的博客 1656

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

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

weixin_42613505的博客 4504

1、硬件工程师笔面试真题汇总(2025版本)

答:按照使用习惯,电源指示灯用红色,信号指示灯用绿色这两种颜色的LED 灯技术最成熟,价格最便宜通孔是贯穿整个PCB 的过孔盲孔是从PCB 表层连接到内层的过孔埋孔是埋在PCB 内层的过孔。大多数PCB厂家的加工能力是这样的:大于等于8mil 的过孔可以做机械孔小于等于6mil 的过孔需要做激光孔对小于等于6mil 的微型孔,在钻孔空间不够时,允许一部分过打在PCB 焊盘上。

XU157303764的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 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、付费专栏及课程。

余额充值