引言:更多相关请看 个人系列 ,关于shell基础请看shell教程。
在实际开发中,我们可能针对多个linux服务器执行同样的命令:每个服务器都去一一执行一遍特别麻烦,所以写了一个批量执行脚本。
配置服务器集群信息
这里不细说
[root@salve2 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.82.11 master
172.31.82.12 slave1
172.31.82.13 slave2
配置hostname
[root@salve2 ~]# cat /etc/hostname
salve2
配置ssh免密登录
1.生成密钥:
ssh-keygen -t rsa(默认位于 ~/.ssh/)
2. 拷贝公钥到所有机器:
ssh-copy-id root@master
ssh-copy-id root@slave1
ssh-copy-id root@slave2
3.测试免密登录:
ssh master
ssh slave1
ssh slave2
slaves文件
[root@salve2 ~]# cat /root/slaves
master
slave1
slave2
赋予权限
[root@salve2 ~]# chmod /root/slaves
批量脚本
[root@salve2 ~]# cat /root/bin/cmall
#!/bin/bash
# $@ :将命令行中提供的所有参数作为同一个字符串中的多个单词处理,允许进行迭代
echo "command param: $@" # 打印输入参数
# 迭代循环salves文件内容
for i in `cat /root/slaves`
do
echo "========== $i =========="
echo $i $@
# ssh免密执行
ssh $i $@
# echo $?
done
赋予权限
[root@salve2 ~]# chmod /root/bin/cmall
测试
[root@salve2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 432K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 99G 2.4G 92G 3% /
tmpfs 783M 0 783M 0% /run/user/0
[root@salve2 ~]# ssh master df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 536K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vda1 99G 5.8G 89G 7% /
tmpfs 1.6G 0 1.6G 0% /run/user/0
[root@salve2 ~]# cmall df -h
command param: df -h
========== master ==========
master df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 536K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/vda1 99G 5.8G 89G 7% /
tmpfs 1.6G 0 1.6G 0% /run/user/0
========== slave1 ==========
slave1 df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 464K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 99G 2.4G 92G 3% /
tmpfs 783M 0 783M 0% /run/user/0
========== slave2 ==========
slave2 df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 464K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda1 99G 2.4G 92G 3% /
tmpfs 783M 0 783M 0% /run/user/0
[root@salve2 ~]# cmall cat /root/slaves
command param: cat /root/slaves
========== master ==========
master cat /root/slaves
master
slave1
slave2
========== slave1 ==========
slave1 cat /root/slaves
master
slave1
slave2
========== slave2 ==========
slave2 cat /root/slaves
master
slave1
slave2
注意:ll命令在ssh中不能执行,找不到命令。
[root@salve2 ~]# ll /root
total 8
drwxr-xr-x 2 root root 4096 Jun 7 18:08 bin
-rwxr-xr-x 1 root root 21 Jun 7 17:30 slaves
[root@salve2 ~]# ssh slave1 ll /root
bash: ll: command not found
[root@salve2 ~]# cmall ll /root
command param: ll /root
========== master ==========
master ll /root
bash: ll: command not found
========== slave1 ==========
slave1 ll /root
bash: ll: command not found
========== slave2 ==========
slave2 ll /root
bash: ll: command not found