Centos7.9通过expect脚本批量修改H3C交换机配置

本文介绍了如何通过Linux服务器和Shell脚本来自动化批量配置H3C二层交换机,包括检查系统服务、安装依赖、启动服务、编辑脚本以及使用expect进行远程配置SSH和关闭Telnet的过程。

背景:

公司有几百台H3C二层交换机设备,当需要批量更改配置时非常的消耗工作量

解决:

通过一台Linux服务器,编写shell脚本,模拟Telnet至各台交换机,让一切变的很容易

1.首先在安装Telnet服务前需要检测centOS系统是否安装了xinetd和telnet-server

rpm -qa telnet-server

rpm -qa xinetd

2.如果没有安装,则开始安装

yum -y install telnet-server

yum -y install telnet

yum -y install xinetd

3.进行配置安装好的“telnet”想要启动telnet以及xinetd必须设置开启后自动启动

systemctl enable xinetd.service

systemctl enable telnet.socket

4.接下来启动服务

systemctl start telnet.socket

systemctl start xinetd

5.将批量交换机的地址放入ip.txt文本中

6.通过shell脚本进行循环处理

以下例子为我一个批量添加开启SSH和关闭Telnet的配置脚本,可以通过此模板修改任意配置:

将交换机清单记录在ip.txt文本中,脚本开始前会先去确认清单中的地址是否在线,如在线即进入修改配置,最后将配置完成的和不在线的均记录日志

7.安装expect

yum -y install expect

8.通过SSH工具远程到服务器

9.进入到opt目录

[root@dcvwilnetwork ~]# cd /opt/

10.下载ip.txt到桌面

11.将IP添加到ip.txt文本(可批量添加)

12.覆盖原先ip.txt文本

13.下载enablessh.sh和saveconfig.sh脚本更改密码

14.修改交换机账号和密码(注意不要取消单引号'XXX ')

 15.将修改好的脚本上传覆盖

16.运行脚本(要有执行脚本的权限

17.运行脚本开启ssh

[root@dcvwilnetwork opt]# ./enablessh.sh

单台运行界面

 多台运行界面

 18.关闭telenet

[root@dcvwilnetwork opt]# ./saveconfig.sh

单台运行界面

 多台运行界面

 备注:以下为脚本的内容:

开启ssh

关闭Telnet

<think>好的,我现在需要帮用户解决在CentOS 7.9上安装Ansible并用于批量巡检网络交换机的问题。首先,我得确认用户的需求:他们想用Ansible来自动化检查网络交换机的状态,可能是收集信息、检查配置或者监控性能。 首先,安装Ansible。CentOS 7.9默认的仓库可能没有最新版本的Ansible,所以需要添加EPEL仓库。记得EPEL提供了额外的软件包,包括Ansible。用户可能需要先安装EPEL,然后通过yum安装Ansible。安装完成后,确认版本是否合适,可能需要检查是否满足最低要求。 接下来是配置Ansible。用户需要编辑/etc/ansible/hosts文件,添加他们的网络交换机IP或主机名。这里需要注意的是,网络交换机通常不支持SSH的密钥认证,可能需要配置SSH用户名和密码。或者,如果交换机支持,可能需要设置特定的连接方式,比如使用paramiko或者其他插件。 然后,SSH连接的问题。CentOS默认的SSH配置可能不兼容某些交换机的SSH实现。可能需要调整SSH参数,比如禁用密钥检查,或者使用更兼容的选项。例如,在ansible.cfg中设置host_key_checking = False,以及指定正确的SSH参数,比如-o KexAlgorithms=diffie-hellman-group1-sha1,如果交换机使用的是旧的加密算法。 接下来,编写Ansible Playbook。网络设备通常需要特定的模块,比如ios_command(针对Cisco IOS)、nxos_command(Cisco NX-OS)、或者通用的net_command。用户需要确认他们的交换机品牌和型号,选择合适的模块。例如,巡检可能需要执行show version、show interfaces status、show running-config等命令,然后捕获输出结果。 需要注意的是,Ansible默认使用Python的SSH模块,但有些网络设备可能需要使用paramiko或者其他的SSH库。可能需要安装额外的Python包,比如paramiko,并且配置Ansible的连接方式为paramiko。 另外,权限问题。交换机的SSH登录可能需要特权模式(enable模式),所以在Playbook中可能需要配置become参数,或者使用ansible_network_os变量指定操作系统类型,以及提供enable密码。 测试环节很重要。用户应该先手动用SSH连接到交换机,确认能够成功登录并执行命令。然后通过Ansible的adhoc命令测试连通性,比如ansible all -m ping -u username --ask-pass。如果使用paramiko,可能需要添加-c paramiko选项。 最后,巡检脚本的编写和输出处理。用户可能需要将收集到的信息保存到文件,或者解析输出以生成报告。可能需要使用Ansible的register模块来捕获命令输出,然后通过模板或者debug模块显示结果,或者写入文件。 可能遇到的错误包括SSH连接超时、认证失败、命令不支持等。需要指导用户如何调试,比如增加-vvv参数查看详细输出,检查命令语法是否正确,确认权限是否足够。 总结步骤应该是:安装Ansible,配置Inventory和SSH设置,编写Playbook处理特定网络模块,测试连接,执行巡检任务,处理输出结果。同时,提醒用户注意不同厂商交换机的模块差异,可能需要查阅Ansible的文档或社区模块。</think>以下是在CentOS 7.9上安装Ansible并实现网络交换机批量巡检的分步指南: --- ### **一、安装Ansible** 1. 更新系统 ```bash sudo yum update -y ``` 2. 安装EPEL仓库(提供Ansible软件包) ```bash sudo yum install epel-release -y ``` 3. 安装Ansible ```bash sudo yum install ansible -y ``` 4. 验证安装 ```bash ansible --version # 输出应显示版本≥2.9 ``` --- ### **二、配置Ansible环境** 1. 编辑Inventory文件 ```bash sudo vim /etc/ansible/hosts ``` 添加交换机IP或主机名(示例): ```ini [switches] 192.168.1.10 ansible_user=admin ansible_ssh_pass=cisco123 192.168.1.11 ansible_user=admin ansible_ssh_pass=h3c@456 ``` 2. 配置SSH兼容性(针对老旧交换机) 创建配置文件`~/.ansible.cfg`: ```ini [defaults] host_key_checking = False # 禁用SSH密钥验证 [ssh_connection] ssh_args = -o KexAlgorithms=diffie-hellman-group1-sha1 -C ``` --- ### **三、编写巡检Playbook** 1. 创建Playbook文件(示例:`switch_check.yml`) ```yaml --- - name: Network Switch巡检任务 hosts: switches gather_facts: no # 网络设备通常不支持fact收集 connection: network_cli # 使用网络设备专用连接方式 tasks: - name: 收集设备信息 cisco.ios.ios_command: # 假设为Cisco IOS设备 commands: - show version - show interfaces status - show running-config | include snmp register: output - name: 保存巡检结果 copy: content: "{{ output.stdout_lines }}" dest: "/tmp/巡检报告_{{ inventory_hostname }}.txt" ``` --- ### **四、执行巡检任务** 1. 安装网络设备专用模块(如Cisco IOS) ```bash ansible-galaxy collection install cisco.ios ``` 2. 运行Playbook ```bash ansible-playbook switch_check.yml -k # -k表示手动输入SSH密码(若未在inventory中配置密码) ``` --- ### **五、关键注意事项** 1. **设备兼容性** 不同品牌需使用对应模块: - 华为:`community.network.huawei_s` - H3C:`community.network.comware` - 通用方法:`ansible.netcommon.cli_command` 2. **特权模式** 若需进入`enable`模式,在inventory中配置: ```ini 192.168.1.10 ansible_become=yes ansible_become_password=enable_password ``` 3. **调试方法** 添加`-vvv`参数查看详细执行过程: ```bash ansible-playbook switch_check.yml -vvv ``` --- ### **六、扩展优化建议** 1. **使用Vault加密密码** 通过`ansible-vault`加密敏感信息: ```bash ansible-vault encrypt vars/passwords.yml ``` 2. **定时任务** 配置cron定期执行巡检: ```bash crontab -e # 每天凌晨1点执行 0 1 * * * /usr/bin/ansible-playbook /path/to/switch_check.yml ``` 3. **生成HTML报告** 配合`template`模块,使用Jinja2模板将输出转换为可视化报告。 --- 通过以上步骤,您可快速实现基于Ansible的网络设备批量巡检。实际应用中需根据具体设备型号调整模块和命令。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold.Shen

你的鼓励是我最大创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值