linux使用expect批量管理执行命令
公司给我布置个任务,要我给服务器上写个批量执行命令的脚本,而且要求只能在一个地方去管理全部服务器,当听到这个要求的时候,心里就想应该如何去完成,网上搜了下可以通过使用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
这里是执行/home下的deploy.sh脚本,这个是公司任务脚本,这里就不透露给大家.
4.再来写个脚本来实现批量执行
vi doexcute.sh
5.给脚本赋权限
chmod +x *.sh
chmod +x *.exp
6.执行命令
sh doexcute.sh 或 ./doexcute.sh
好了,就到这里.文件脚本可以到http://download.slogra.com/里下载.
系统: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/里下载.
评论: