Shell脚本之H3C网络设备批量巡检


aihuafeng66t
克里斯蒂亚诺诺 2024-01-09 16:31:50 66077 赞同 0 反对 0
分类: 资源
Shell脚本之H3C网络设备批量巡检

一、需求说明
  网络工程师每天都需要巡检网络设备,或者临时接到一些任务,需要统计一些信息,比如每台设备的运行时间。如果是几台,十几台设备,熟练的工程师可能几分钟就完成了统计,但如果是成百上千台呢?此博文主要是以批量统计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

判断是否存在巡检命令列表
if [ -s $CmdList ];then
  while read line
  do
    ip=`echo $line | awk '{print $1}'`
    user=`echo $line | awk '{print $2}'`
    passwd=`echo $line | awk '{print $3}'`
    while read line
    do
      cmd=$line
      echo "$ip $cmd 检查结果如下:" >> $resultlog
      cp ssh_remote_host.sh.bak ssh_remote_host.sh
      sed -i "s/ABCMD/$cmd/g" ssh_remote_host.sh
      chmod u+x ssh_remote_host.sh
      ./ssh_remote_host.sh $ip $user $passwd $cmd>> $resultlog
      rm -rf ssh_remote_host.sh
    done < $CmdList
  done < $HostList
else
  echo "待巡检命令为空,执行默认的统计设备uptime时间!" >> $resultlog
  while read line
  do
    ip=`echo $line | awk '{print $1}'`
    user=`echo $line | awk '{print $2}'`
    passwd=`echo $line | awk '{print $3}'`
    #echo "$ip $cmd 检查结果如下:" >> $resultlog
    cp ssh_remote_host.sh.bak ssh_remote_host.sh
    sed -i "s/ABCMD/$cmd/g" ssh_remote_host.sh
    chmod u+x ssh_remote_host.sh
    ./ssh_remote_host.sh $ip $user $passwd $cmd > tmp.txt
    uptime=`cat tmp.txt | grep -a "uptime is" |awk '{for (i=6;i<=NF;i++)printf("%s ", $i);print ""}'` 
    echo -e " $ip 运行时间 $uptime" >> $resultlog
    rm -rf ssh_remote_host.sh
  done < $HostList
  echo -e "巡检结束,`date +%F-%T`" >> $resultlog
  cat $resultlog
fi
————————————————

 



如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
麒麟系统版本介绍白皮书  524
MiSans 阿拉伯语字体文件  466
解决新版本麒麟系统中微信打开白屏显示  406
麒麟系统进行系统监控,查看进程的运行时间来优化性能  339
临时关闭swap分区与永久关闭swap分区(注意必须确保系统有足够内存运行!)  231
统信桌面专业版添加字体  226
统信uos单一程序黑屏,任务栏正常显示解决办法  224
统信uos快捷键文档  194
统信系统双无线网卡设置关闭开启单一网卡  147
分享一个磁盘恢复工具,适用于多平台(包括统信)  128
最近下载排行榜
麒麟系统版本介绍白皮书 0
MiSans 阿拉伯语字体文件 0
解决新版本麒麟系统中微信打开白屏显示 0
麒麟系统进行系统监控,查看进程的运行时间来优化性能 0
临时关闭swap分区与永久关闭swap分区(注意必须确保系统有足够内存运行!) 0
统信桌面专业版添加字体 0
统信uos单一程序黑屏,任务栏正常显示解决办法 0
统信uos快捷键文档 0
统信系统双无线网卡设置关闭开启单一网卡 0
分享一个磁盘恢复工具,适用于多平台(包括统信) 0
作者收入月榜
1

prtyaa 收益399.62元

2

zlj141319 收益236.11元

3

IT-feng 收益219.61元

4

1843880570 收益214.2元

5

风晓 收益208.24元

6

哆啦漫漫喵 收益204.5元

7

777 收益173.07元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!