| 关键词: nbsp monitor 脚本 expect Hardware path fcs 机器 192.168 echo |
实现目标: 通过一台机器(暂且叫管理端服务器)运行脚本,自动登录远程多台客户端,并 运 行脚本或命令。 环境需求: 1.各个机器都要开通NFS,并挂载管理端服务器共享出的统一共享盘。 2.各个机器都要开通ssh服务。 3.脚本放在共享的目录里。 4.网络通畅,远程嘛,这是必须的了,呵呵。 脚本运作过程: 在管理服务器上运行expect.sh,自动调用main.sh ,然后再调用monitor_fcs.sh。说明:monitor_fcs.sh是收集客户端机器信息的,类似收集信息的脚本统一写进main.sh里,统一调用。 以下是脚本具体内容,用时根据实情做下客户化就可以了,我这里是在AIX系统里写的,收集光纤卡信息的。经测试linux下也能用,monitor_fs.sh要根据自己的机器情况修改。 [root@localhost testexpect]# cat expect.sh #!/usr/bin/expect set timeout 300 # 替换你自己的用户名 set user "root" #替换你自己的登录密码 set password "root" # IP地址列表 set ip_addrs [list 192.168.227.128 192.168.227.130] foreach IP $ip_addrs { spawn ssh $user@$IP expect { "(yes/no)?" { send "yes ";exp_send continue } "password:" { send "$password ";exp_send continue } } expect "#" # 替换你要执行的命令 send "sh /sharebin/main.sh " sleep 5 send "exit " } [root@localhost testexpect]# cat main.sh #!/bin/ksh path=$PATH export path workdir=/sharebin if [ ! -d $workdir ] then echo "$workdir not exist." else cd $workdir fi /sharebin/monitor_fcs.sh 》monitor_fcs_log_`date +\%F`.log 2>&1 [root@localhost testexpect]# cat monitor_fcs.sh #!/bin/ksh path=$PATH export path host=`hostname` #echo " Hostname Hardware ID Hardware Location Hardware WWN Status" echo " " fcs=`lsdev -C | grep fcs|awk '{ print $1 }'` for i in $fcs do code=`lscfg | grep $i|awk '{ print $3 }'` Networkadd=`lscfg -vl $i|grep Network|sed 's/\.\{8,\}/ /'|awk ' { print $3 }'` fcstat -d $i >/dev/null 2>&1 if [ $? -eq 0 ] then stat='N' else stat='Y' fi echo "$host\t\t$i\t\t$code\t\t$Networkadd\t$stat" done echo " " 还有一种实现方式是不用expect,因为这样有明文密码,不安全。只使用ssh实现。不过要做public-key验证,要不然每登录一台机器都要手动输入密码。用ssh的话把上文的expect.sh内容改成如下内容,其他不变,然后写一个IP 的列表文件,把要登录的IP都写进去就好了,就是下文的ip_list.txt. 脚本内容如下: #!/bin/ksh path=$PATH export path user=root echo " Hostname Hardware ID Hardware Location Hardware WWN Status" 》monitor_fcs_log_`date +\%F`.log 2>&1 echo "==================================================================================================================" 》monitor_fcs_log_`date +\%F`.log 2>&1 for i in `cat ip_list.txt` do ssh $i "/sharebin/main.sh" done echo "==================================================================================================================" 》monitor_fcs_log_`date +\%F`.log 2>&1 [root@localhost testexpect]# cat ip_list.txt 192.168.227.128 192.168.227.129 192.168.227.130 192.168.227.131 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|