shell脚本-批量主机执行命令(expect)
shell脚本-批量主机执行命令(expect)准备
上次连接多台服务器使用ssh-keygen,24机器去连接22、25,所以存在.ssh/authorized_keys
1.如果有.ssh/authorized_keys该文件则先删除
rm -rf.ssh/authorized_keysexpect介绍
1.expect命令含义
expect是一种脚本语言,它能够代替人工实现与终端的交互,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
2.expect使用场景
(1)并根据预定标准回答其问题,回答“是”、“否”或将控制权交还给您
(2)远程连接设备并执行自动化操作
(3)主要是一些需要人机交互的地方,如果提前知道应该输入什么指令都可以使用expect 工具
3.expect命令
命令 作用
send 用于向进程发送字符串
expect 从进程接收字符串
spawn 启动新的进程
interact 允许用户交互
exp_continue处理匹配成功后,继续执行下一个匹配
命令中\r表示换行
实验步骤
1.安装expect工具
yum install expect2.创建host.info2文件
# vim host.info2
192.168.70.25 root 22 123456
192.168.70.22 root 22 1234563.创建shell脚本
# vim 9.sh
#!/bin/bash
COMMAND=$*
HOST_INFO=host.info2
IP_LIST=`awk '/^[^#]/{print $1}' $HOST_INFO`
for IP in $IP_LIST;do
USER=`awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO`
PORT=`awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO`
PASSWD=`awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO`
expect -c "
spawn ssh -p $PORT $USER@$IP
expect {
\"(yes/no)\" {send \"yes\r\"; exp_continue }
\"password:\" {send \"$PASSWD\r\"; exp_continue}
\"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue}
}
"
echo "-----------------------------------"
done4.执行结果
bash 9.sh df -h
# bash 9.sh df -h
spawn ssh -p 22 root@192.168.70.25
root@192.168.70.25's password:
Last login: Wed Jul 12 01:30:48 2023 from 192.168.70.24
# df -h
文件系统 容量已用可用 已用% 挂载点
devtmpfs 475M 0475M 0% /dev
tmpfs 487M 0487M 0% /dev/shm
tmpfs 487M7.7M479M 2% /run
tmpfs 487M 0487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G2.6G 15G 15% /
/dev/sda1 1014M138M877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
#exit
登出
Connection to 192.168.70.25 closed.
df -h
exit
-----------------------------------
spawn ssh -p 22 root@192.168.70.22
root@192.168.70.22's password:
Last login: Wed Jul 12 01:30:49 2023 from 192.168.70.24
# df -h
文件系统 容量已用可用 已用% 挂载点
devtmpfs 476M 0476M 0% /dev
tmpfs 487M 0487M 0% /dev/shm
tmpfs 487M7.7M479M 2% /run
tmpfs 487M 0487M 0% /sys/fs/cgroup
/dev/sda2 19G2.1G 17G 11% /
/dev/sda1 1014M132M883M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
#exit
登出
Connection to 192.168.70.22 closed.
df -h
exit
-----------------------------------bash 9.sh free -m
# bash 9.sh free -m
spawn ssh -p 22 root@192.168.70.25
root@192.168.70.25's password:
Last login: Wed Jul 12 01:31:24 2023 from 192.168.70.24
# free -m
total used free sharedbuff/cache available
Mem: 972 173 690 7 108 670
Swap: 2047 0 2047
#exit
登出
Connection to 192.168.70.25 closed.
free -m
exit
-----------------------------------
spawn ssh -p 22 root@192.168.70.22
root@192.168.70.22's password:
Last login: Wed Jul 12 01:31:24 2023 from 192.168.70.24
# free -m
total used free sharedbuff/cache available
Mem: 972 150 707 7 114 690
Swap: 0 0 0
#exit
登出
Connection to 192.168.70.22 closed.
free -m
exit
-----------------------------------
来源:https://www.cnblogs.com/xuxuxuxuxu/p/17546412.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]