shell腳本-批量主機(jī)執(zhí)行命令(expect)
準(zhǔn)備
上次連接多臺服務(wù)器使用ssh-keygen,24機(jī)器去連接22、25,所以存在.ssh/authorized_keys
1.如果有.ssh/authorized_keys該文件則先刪除
rm -rf.ssh/authorized_keys
expect介紹
1.expect命令含義
expect是一種腳本語言,它能夠代替人工實(shí)現(xiàn)與終端的交互,主要應(yīng)用于執(zhí)行命令和程序時,系統(tǒng)以交互形式要求輸入指定字符串,實(shí)現(xiàn)交互通信。2.expect使用場景
(1)并根據(jù)預(yù)定標(biāo)準(zhǔn)回答其問題,回答“是”、“否”或?qū)⒖刂茩?quán)交還給您
(2)遠(yuǎn)程連接設(shè)備并執(zhí)行自動化操作
(3)主要是一些需要人機(jī)交互的地方,如果提前知道應(yīng)該輸入什么指令都可以使用expect 工具3.expect命令
命令 作用
send 用于向進(jìn)程發(fā)送字符串
expect 從進(jìn)程接收字符串
spawn 啟動新的進(jìn)程
interact 允許用戶交互
exp_continue 處理匹配成功后,繼續(xù)執(zhí)行下一個匹配命令中\(zhòng)r表示換行
實(shí)驗(yàn)步驟
1.安裝expect工具
yum install expect
2.創(chuàng)建host.info2文件
[root@localhost scripts]# vim host.info2 192.168.70.25 root 22 123456 192.168.70.22 root 22 123456
3.創(chuàng)建shell腳本
[root@localhost scripts]# 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 "-----------------------------------" done
4.執(zhí)行結(jié)果
bash 9.sh df -h文章來源:http://www.zghlxwxcb.cn/news/detail-547439.html
[root@localhost scripts]# 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 [root@localhost ~]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 2.6G 15G 15% / /dev/sda1 1014M 138M 877M 14% /boot tmpfs 98M 0 98M 0% /run/user/0 [root@localhost ~]# 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 [root@zabbix-agent02 ~]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) devtmpfs 476M 0 476M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/sda2 19G 2.1G 17G 11% / /dev/sda1 1014M 132M 883M 13% /boot tmpfs 98M 0 98M 0% /run/user/0 [root@zabbix-agent02 ~]# exit 登出 Connection to 192.168.70.22 closed. df -h exit -----------------------------------
bash 9.sh free -m文章來源地址http://www.zghlxwxcb.cn/news/detail-547439.html
[root@localhost scripts]# 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 [root@localhost ~]# free -m total used free shared buff/cache available Mem: 972 173 690 7 108 670 Swap: 2047 0 2047 [root@localhost ~]# 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 [root@zabbix-agent02 ~]# free -m total used free shared buff/cache available Mem: 972 150 707 7 114 690 Swap: 0 0 0 [root@zabbix-agent02 ~]# exit 登出 Connection to 192.168.70.22 closed. free -m exit -----------------------------------
到了這里,關(guān)于shell腳本-批量主機(jī)執(zhí)行命令(expect)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!