linux使用expect批量管理执行命令

post by rocdk890 / 2012-9-1 17:36 Saturday linux技术
  公司给我布置个任务,要我给服务器上写个批量执行命令的脚本,而且要求只能在一个地方去管理全部服务器,当听到这个要求的时候,心里就想应该如何去完成,网上搜了下可以通过使用expect写成shell脚本来批量处理.
  系统:centos 5.5
  需要的软件:expect
1.先安装expect:
yum -y install expect

去官网下载:
http://expect.sourceforge.net/

2.创建server_list.conf,格式是:
ip port 账号 密码
这个是服务器列表配置文件.

3.编写expect脚本:
vi dotask.exp
#!/usr/bin/expect -f
set ipaddress [lindex $argv 0]
set port [lindex $argv 1]
set username [lindex $argv 2]
set passwd [lindex $argv 3]
set timeout 30
spawn ssh $ipaddress -p$port -l$username
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$passwd\r" }
}
expect -re "\](\$|#) "
send "sh /home/deploy.sh \r"
expect -re "\](\$|#) "
send "exit\r"

这里是执行/home下的deploy.sh脚本,这个是公司任务脚本,这里就不透露给大家.

4.再来写个脚本来实现批量执行
vi doexcute.sh
#!/bin/bash

filename="server_list.conf"
while read line
do
  #echo $line;
  expect dotask.exp $line
done < $filename

5.给脚本赋权限
chmod +x *.sh
chmod +x *.exp

6.执行命令
sh doexcute.sh 或 ./doexcute.sh
好了,就到这里.文件脚本可以到http://download.slogra.com/里下载.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-248.html

标签: centos shell 脚本 批量 执行 管理 expect

评论: