expect实现多台主机执行同样操作

简介:

      下月有一个系统上线23台主机,虚拟机模板不带应用用户,所以只能手动来一个一个建立,于是想到了写一个小脚本解脱重复劳动的痛苦。

整个脚本分为脚本和配置文件:


配置文件如下:

1
2
3
4
5
username=root
password=1q2w3e
ip1=192.168.10.129
ip2=192.168.10.130
ip3=192.168.10.128

脚本文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
UNAME=` cat  . /sysinfo .conf|  grep  username| awk  -F  '='  '{print $2}' `
PASSWD=` cat  . /sysinfo .conf|  grep  password| awk  -F  '='  '{print $2}' `
cat  . /sysinfo .conf| grep  ip| awk  -F  '='  '{print $2}'  while  read  IP 
do
ping  -c 2 $IP > /dev/null  2>&1
conn_check=$?
if  [ $conn_check - eq  0 ];  then
expect << EOF
spawn  ssh   $UNAME@$IP
expect  "*password:"  { send  "$PASSWD\r"  }
expect   "*]#"  { send  "lvcreate -L 500M -n lv_test system\r"  }
expect   "*]#"  { send  "mkdir /test\r"  }
expect   "*]#"  { send  "mkfs.ext4 /dev/system/lv_test\r"  }
expect   "*]#"  { send  "mount /dev/system/lv_test /test\r"  }
expect   "*]#"  { send  "exit\r"  }
EOF
elif  [ -s . /error .log ];  then
echo  "`date`  The hostmachine $IP is not connected!" >>. /error .log
else
echo  "`date`  The hostmachine $IP is not connected!" >. /error .log
fi
done

备注:里面的IP为案例IP并非我主机实际IP




本文转自 yuri_cto 51CTO博客,原文链接:http://blog.51cto.com/laobaiv1/1978665,如需转载请自行联系原作者

相关文章
|
Cloud Native 网络安全 Go
SSH连接服务器后执行多条命令
SSH连接服务器后执行多条命令
137 0
Ping 命令配置 -c、-i、-w 指令使用
Ping 命令配置 -c、-i、-w 指令使用
315 0
|
运维 网络协议 Shell
shell脚本批量配置多台主机静态ip
shell脚本批量配置多台主机静态ip
108 0
|
网络安全 Go Cloud Native
【小技巧】SSH连接服务器后如何默认执行多条命令?
大家平时有没有遇到自己连接云服务器,ssh 连接上去之后,发现自己的一些小工具用不了 例如go build无法使用 ,由于我们安装配置golang 环境的时候
184 0
【小技巧】SSH连接服务器后如何默认执行多条命令?
|
算法 Shell 网络安全
获取多台主机命令执行结果
之前在主产品用过一个运维同事写的工具,devpssh。可以通过指定主机列表来执行一条shell命令,然后获取到所有的返回结果,输出到屏幕上。 我个人觉得这个工具很实用,尤其是在有多台Nginx服务器的时候,由于负载均衡策略下,不同的请求可能会被下放到不同的get机,因此产生的日志文件就可能分布在多台机器上。
1792 0
|
网络协议 安全