首页 电脑 电脑学堂 查看内容

expect脚本远程管理服务器

2011-9-26 15:39 657 0

摘要:   实现目标:  通过一台机器(暂且叫管理端服务器)运行脚本,自动登录远程多台客户端,并 运 行脚本或命令。  环境需求:  1.各个机器都要开通NFS,并挂载管理端服务器共享出的统一共享盘。  2....
关键词: 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
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部