shell脚本-批量主机执行命令(expect)
  9so5SSDOfwhR 2023年11月01日 65 0

shell脚本-批量主机执行命令(expect)

准备

上次连接多台服务器使用ssh-keygen,24机器去连接22、25,所以存在.ssh/authorized_keys

1.如果有.ssh/authorized_keys该文件则先删除

rm -rf.ssh/authorized_keys

expect介绍

1.expect命令含义
expect是一种脚本语言,它能够代替人工实现与终端的交互,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

2.expect使用场景
(1)并根据预定标准回答其问题,回答“是”、“否”或将控制权交还给您
(2)远程连接设备并执行自动化操作
(3)主要是一些需要人机交互的地方,如果提前知道应该输入什么指令都可以使用expect 工具

3.expect命令

命令 作用
send 用于向进程发送字符串
expect 从进程接收字符串
spawn 启动新的进程
interact 允许用户交互
exp_continue 处理匹配成功后,继续执行下一个匹配

命令中\r表示换行

实验步骤

1.安装expect工具

yum install expect

2.创建host.info2文件

[root@localhost scripts]# vim host.info2
192.168.70.25 root 22 123456
192.168.70.22 root 22 123456

3.创建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.执行结果

bash 9.sh df -h

[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
文件系统                 容量  已用  可用 已用% 挂载点
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
文件系统        容量  已用  可用 已用% 挂载点
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

[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
-----------------------------------
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  kZLEadpmxZsY   2024年05月17日   31   0   0 Linux
  kZLEadpmxZsY   2024年05月17日   44   0   0 Linux
  4hf9DKAg5W6h   2024年05月17日   43   0   0 Linux
  2xk0JyO908yA   2024年05月17日   63   0   0 Linux
  tAaiqedz71Vf   2024年05月17日   61   0   0 Linux
  2sqDzWaoi9Ck   2024年05月17日   52   0   0 Linux
LVM
  XWcNkifzer3j   2024年05月20日   53   0   0 Linux
9so5SSDOfwhR