当前位置: > shell编程 >

实现同时管理多台服务器的expect脚本

时间:2014-04-29 01:35来源:linux.it.net.cn 作者:IT网

最近通过exploring expect书籍,简单学了下expect脚本语言,这个脚本语言是tcl语言的扩展,用来解决一些工具无法自动交互的问题,如ssh登录时,无法在命令就指定密码等。下面是利用expect来实现管理多台服务器的简单例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/expect
#purpose:auto run command on multiple servers
#how to:  mms <user> <cmd>
#write by zhumaohai.
 
if{$argc < 2} {
    puts"usage: mms <user> <cmd>"
    exit1
}
 
#set servers
setSERVERS {"192.168.0.100""192.168.0.101""192.168.0.102"}
 
#set password
setPASSWORDS(user1)"passwd1"
setPASSWORDS(user2)"passwd2"
 
#get virables
setUSER [lindex $argv 0]
setCMD [lrange $argv 1 end]
 
setpasswd$PASSWORDS($USER)
 
foreach x $SERVERS {
    evalspawnssh-l $USER $x $CMD
    expect {
    "password"{ send"$passwdr"}
    "yes/no"{ send"yesr";exp_continue; }
    }
    expect eof
}

1、这里定义了三台服务器192.168.0.100 192.168.0.101 192.168.0.102,定义了用户user1的密码为passwd1,用户user2的密码为passwd2,假如脚本文件名为ms,用法为:
./ms 用户 命令
如./ms user1 date
2、在使用脚本时,请确认系统已经安装有expect命令,centos使用yum install expect安装,ubuntu使用apt-get install expect安装。

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容