How to perform batch tasks on many remote hosts based on ssh command

Create a file named k8s-reset.sh in directory ~/Downloads/.tmp/

lwk@qwfys:~$ touch ~/Downloads/.tmp/k8s-reset.sh
lwk@qwfys:~$ chmod +x ~/Downloads/.tmp/k8s-reset.sh 
lwk@qwfys:~$ ll ~/Downloads/.tmp/k8s-reset.sh 
-rwxrwxr-x 1 lwk lwk 206 May 14 10:24 /home/lwk/Downloads/.tmp/k8s-reset.sh*

The content of the file b.sh is as follows

#!/bin/bash
kubeadm reset -f
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ip link delete cni0
ip link delete flannel.1
systemctl start docker

We will use the host name in the following commands. We need to configure the mapping between the host name and the ip address in the host file. The contents of the host file are as follows.

lwk@qwfys:~$ cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	qwfys

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.3.80	inner80.xtwj.com
192.168.3.81	inner81.xtwj.com
192.168.3.82	inner82.xtwj.com
192.168.3.83	inner83.xtwj.com
192.168.3.84	inner84.xtwj.com
192.168.3.85	inner85.xtwj.com
lwk@qwfys:~$ 

Next, we will perform the batch tasks shown in file ~/Downloads/.tmp/k8s-reset.sh on multiple hosts.

lwk@qwfys:~$ for index in {80..85};do ssh root@inner$index.xtwj.com "/bin/bash -s" < Downloads/.tmp/k8s-reset.sh;done

eg 1

lwk@qwfys:~$ for index in {80..82};do ssh root@inner$index.xtwj.com "echo xtwj$index; ip a";done
xtwj80
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:0a:68:a0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.80/24 brd 192.168.3.255 scope global noprefixroute dynamic eth0
       valid_lft 76065sec preferred_lft 76065sec
    inet6 fe80::45e0:ec97:658d:d603/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:34:6d:a4:b7 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
xtwj81
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:96:1e:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.81/24 brd 192.168.3.255 scope global noprefixroute dynamic eth0
       valid_lft 57021sec preferred_lft 57021sec
    inet6 fe80::45e0:ec97:658d:d603/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:53:6a:80:c1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:53ff:fe6a:80c1/64 scope link 
       valid_lft forever preferred_lft forever
13: vetha5435cb@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether da:94:e1:bf:e8:c7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::d894:e1ff:febf:e8c7/64 scope link 
       valid_lft forever preferred_lft forever
xtwj82
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:2f:0d:b7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.82/24 brd 192.168.3.255 scope global noprefixroute dynamic eth0
       valid_lft 73607sec preferred_lft 73607sec
    inet6 fe80::45e0:ec97:658d:d603/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:4a:9f:2f:18 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:4aff:fe9f:2f18/64 scope link 
       valid_lft forever preferred_lft forever
lwk@qwfys:~$ 

Tips: The part of "echo xtwj$index; ip a" must be enclosed in brackets, otherwise, the command will only be executed locally, not on the remote host.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章