欢迎光临
专业Linux运维二十年

CentOS使用expect批量远程执行脚本和命令

我们有时可能会批量去操作服务器,比如批量在服务器上上传某个文件,安装软件,执行某个命令和脚本,重启服务,重启服务器等,如果人工去一台台操作的话会特别繁琐,并浪费人力。

这时我们可以使用expect,向目标服务器上发送指令去实现批量操作。

下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应的命令

1. 在centos上安装expect

yum install expect

2. 编写expect脚本 copyfilebatch.sh

下面的脚本将向内网IP为 192.168.0.102 至 192.168.0.112 的服务器分别拷贝一个rc.local文件,拷贝成功后,执行chmod命令,分别重启服务器

?
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
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/expect -f
set
password rootpassword
 
for
{
set
i 102} {$i <= 112} {incr i} {
  
set
ip
"192.168.0.$i"
  
puts
"$ip"
 
 
  
spawn
ssh
-o StrictHostKeyChecking=no $ip
  
set
timeout 3
  
expect
"root@$ip's password:"
  
set
timeout 3
  
send
"$password\r"
  
set
timeout 3
  
send
"exit\r"
 
 
  
spawn
scp
/home/install/rc
.
local
root@$ip:
/etc/rc
.d
/rc
.
local
  
set
timeout 3
  
expect
"root@$ip's password:"
  
set
timeout 3
  
send
"$password\r"
  
set
timeout 3
  
send
"exit\r"
 
 
 
 
  
spawn
ssh
root@$ip
 
  
expect {
  
"*yes/no"
{ send
"yes\r"
; exp_continue}
  
"*password:"
{ send
"$password\r"
}
  
}
  
expect
"#*"
 
  
#要执行的命令
  
send
"chmod +x /etc/rc.d/rc.local\r"
  
send
"reboot\r"
  
send
"exit\r"
  
expect eof
}

脚本之家
赞(0) 打赏
未经允许不得转载:Linux老运维 » CentOS使用expect批量远程执行脚本和命令

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫