本文共 3052 字,大约阅读时间需要 10 分钟。
批量远程执行命令
在一台机器上远程到多台机器上执行多条命令,怎么实现呢?
写一个登录到多台机器并执行命令的脚本文件remote-exec-command.sh
vim /usr/local/sbin/expect/remote-exec-command.sh#!/usr/bin/expectset host [lindex $argv 0]set command [lindex $argv 1]set user "root"set passwd "root"spawn ssh $user@$hostexpect {"yes/no" {send "yes\r";exp_continue}"password:" {send "$passwd\r"}}expect "]*"send "$command\r"expect "]*"expect eof
写一个远程机器的ip列表集合文件
vim /tmp/desip.txt192.168.221.20192.168.221.30
写一个调用remote-exec-command.sh这个脚本的文件exec.sh
vim /usr/local/sbin/expect/exec.sh#!/bin/bashfor ip in `cat /tmp/desip.txt`; do ./remote-exec-command.sh $ip "who;ifconfig"done
执行exec.sh
[root@localhost expect]# bash exec.sh spawn ssh root@192.168.221.20root@192.168.221.20's password: Last login: Sun Mar 18 16:47:04 2018 from 192.168.221.10[root@apenglinux-002 ~]# who;ifconfigroot tty1 2018-03-03 10:46root pts/0 2018-03-18 13:29 (192.168.221.10)root pts/1 2018-03-18 10:01 (192.168.221.1)root pts/2 2018-03-18 16:59 (192.168.221.10)ens33: flags=4163mtu 1500 inet 192.168.221.20 netmask 255.255.255.0 broadcast 192.168.221.255 inet6 fe80::5d25:422c:6b81:44f6 prefixlen 64 scopeid 0x20 ether 00:0c:29:d3:03:2c txqueuelen 1000 (Ethernet) RX packets 18903 bytes 1403073 (1.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 18097 bytes 3892662 (3.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 72 bytes 5776 (5.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 72 bytes 5776 (5.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@apenglinux-002 ~]# spawn ssh root@192.168.221.30root@192.168.221.30's password: Last login: Sun Mar 18 16:47:15 2018 from 192.168.221.10[root@apenglinux-002 ~]# who;ifconfigroot pts/0 2018-03-18 15:45 (192.168.221.1)root pts/1 2018-03-18 17:00 (192.168.221.10)ens33: flags=4163 mtu 1500 inet 192.168.221.30 netmask 255.255.255.0 broadcast 192.168.221.255 inet6 fe80::52c5:3f9d:6d2b:445a prefixlen 64 scopeid 0x20 ether 00:0c:29:34:2f:3a txqueuelen 1000 (Ethernet) RX packets 17781 bytes 16618859 (15.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12771 bytes 903704 (882.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback) RX packets 688 bytes 174164 (170.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 688 bytes 174164 (170.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
转载于:https://blog.51cto.com/13480443/2088205