一、需求说明
网络工程师每天都需要巡检网络设备,或者临时接到一些任务,需要统计一些信息,比如每台设备的运行时间。如果是几台,十几台设备,熟练的工程师可能几分钟就完成了统计,但如果是成百上千台呢?此博文主要是以批量统计H3C网络设备的运行时间为例进行介绍展示,主要是复习expect模块的功能,复习shell编程参数的传递,复习sed、awk、grep等命令对文本的过滤、筛选和组合。关于expect模块安装和使用见博文Linux之使用expect备份华为交换机配置。
二、脚本内容
此巡检脚本主要依赖四个文件,分别是h3c_devices.txt、h3c_command.txt、ssh_remote_host.sh.bak、h3c_plxj.sh。
h3c_devices.txt是待巡检设备列表,按照IP 用户名 密码的方式逐行写入到此文件中,如果此文件为空或者不存在则退出程序;
h3c_command.txt是待巡检命令,逐行写入完整的可执行命令到此文件中,如果此文件为空则统计列表中设备的运行时间;
ssh_remote_host.sh.bak是ssh远程登录脚本,巡检每台设备时单独调用;
h3c_plxj.sh是巡检脚本主文件,会执行一些判断和巡检日志结果的处理,此脚本只对设备的运行时间统计进行了处理了,如果固定的巡检要求,还可以根据日志内容自行加工进一步处理,简化运维巡检统计工作。
————————————————
ssh远程登录设备脚本
[root@s146 H3C_xj]# cat ssh_remote_host.sh.bak
#!/usr/bin/expect -f
#auto ssh login
set host [lindex $argv 0]
set user [lindex $argv 1]
set passwd [lindex $argv 2]
#set cmd [lindex $argv 3]
#if { $argc != 4 } {
# puts "请输入正确的参数!!!"
# puts "Usage: expect ./ssh_remote_host.sh ip user passwd cmd"
# exit 1
#}
set timeout 30
spawn ssh -l $user $host
expect {
"(yes/no)" {send "yes\r"; exp_continue}
"password:" {send "$passwd\r"}
}
expect ">" {send "system-view\r"}
expect "]" {send "line vty 0 4\r"}
expect "]" {send "screen-length 0\r"}
expect "]" {send "quit\r"}
expect "]" {send "quit\r"}
expect ">" {send "ABCMD\r"}
expect ">" {send "system-view\r"}
expect "]" {send "line vty 0 4\r"}
expect "]" {send "screen-length 24\r"}
expect "]" {send "quit\r"}
expect "]" {send "quit\r"}
expect ">" {send "quit\r"}
expect eof
————————————————
2、H3C网络设备巡检主脚本
#!/bin/bash
#script name: h3c_plxj.sh
#author: wuhs
#version: v1
#decription: 此脚本用于批量执行H3C设备的巡检,根据待巡检设备列表批量执行指定命令完成巡检
#decription: 此脚本示例为统计设备的运行时间
#decription: 脚本也可以执行指定巡检命令,收集命令相关信息
#参数定义
HostList=h3c_devices.txt
CmdList=h3c_command.txt
curdir=`cd -P $(dirname $0); pwd`
resultlog=h3c_plxj_result.log
cmd="display version | in uptime"
cd $curdir
rm -rf h3c_plxj_result.log
#判断是否存在巡检列表
if [ -s $HostList ];then
echo -e "巡检列表存在,`date +%F-%T`开始巡检" >> $resultlog
else
echo -e "待巡检列表文件不存在或者为空,请检查!" >> $resultlog
exit
fi
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!