命令行里面的for循环
[root@oldboy opt]# for n in `seq 30`;do date -s "2020-03-$n";touch file$n;done
`seq 30` 必须是反引号,多条命令用;分割,"2020-03-$n" 不能用单引号强引 ,done结尾
脚本里的for循环
[root@oldboy ~]# vim /etc/profile.d/mtime.sh
#!/bin/bash
for n in `seq 30`;do
date -s "2020-04-$n"
touch /opt/$(date +%F)_file.txt >>/dev/null
done
#修改系统时间,这样文件的mtime就不一样了,反引号不能使用别的符号代替,写入全局环境变量的脚本,每次开机或者bash都会加载,循环结束,时间修改为 2020-04-30 00:00:00,使用netpdate time1.aliyun.com可以同步阿里云服务器时间
[root@oldboy tmp]# for n1 in `seq 4`;do echo $n1;done 不能用单引号
1
2
3
[root@oldboy tmp]# seq 4
1
2
3
4
[root@oldboy tmp]# for n1 in 'seq 4';do echo $n1;done
cat 1
[root@oldboy tmp]# for n1 in "seq 4";do echo $n1;done
cat 1
使用sshpass一次查看多个服务器(10.0.0.5 10.0.0.6)信息(df -h)
[root@lb01 ~]# vim ssh.sh
#/bin/bash
for num in 5 6;do
echo --------------------10.0.0.$num--------------------
sshpass -p 1 ssh -o StrictHostKeyChecking=no root@10.0.0.$num df-h
done
[root@lb01 ~]# sh ssh.sh
--------------------10.0.0.5--------------------
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.8M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda3 19G 1.9G 17G 10% /
/dev/sda1 497M 124M 374M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
--------------------10.0.0.6--------------------
Filesystem Size Used Avail Use% Mounted on
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/sda3 19G 1.5G 18G 9% /
/dev/sda1 497M 124M 374M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
通过跳板机获取所有机器的load,CPU,Memory等信息(思考:如果服务器数量多,如何并发查看和分发数据)
[root@web01 ~]# vim df.sh
#!/bin/bash
N_ip=172.16.1.
for n in 8 31 41 61;do
echo --------------172.16.1.${N_ip}${n}磁盘信息--------------
ssh root@${N_ip}${n} df -h
done
~
脚本1,(跳板机)
#!/bin/bash
#jumpserver
lb01=172.16.1.5
lb02=172.16.1.6
web01=172.16.1.7
web02=172.16.1.8
web03=172.16.1.9
nfs=172.16.1.31
backup=172.16.1.41
db01=172.16.1.51
db02=172.16.1.52
db03=172.16.1.53
db04=172.16.1.54
m01=172.16.1.61
zabbix=172.16.1.71
cat <<EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
| 8) db01 |
| 9) db02 |
| 10) lb03 |
| 11) db04 |
| 12) m01 |
| 13) zabbix |
| h) help |
+-------------------------+
EOF
read -p 'Please Input Number: ' num
if [ $num -eq 1 ];then
ssh root@$lb01
elif [ $num -eq 2 ];then
ssh root@$lb02
elif [ $num -eq 3 ];then
ssh root@$web01
elif [ $num -eq 4 ];then
ssh root@$web02
elif [ $num -eq 5 ];then
ssh root@$web03
elif [ $num -eq 6 ];then
ssh root@$nfs
elif [ $num -eq 7 ];then
ssh root@$backup
elif [ $num -eq 8 ];then
ssh root@$db01
elif [ $num -eq 9 ];then
ssh root@$db02
elif [ $num -eq 10 ];then
ssh root@$db03
elif [ $num -eq 11 ];then
ssh root@$db04
elif [ $num -eq 12 ];then
ssh root@$m01
elif [ $num -eq 13 ];then
ssh root@$zabbix
else
echo 别连了,贴纸,输错了
fi
脚本2
#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.61
zabbix=10.0.0.71
menu(){
cat <<-EOF
+-------------------------+
| 1) lb01 |
| 2) lb02 |
| 3) web01 |
| 4) web02 |
| 5) web03 |
| 6) nfs |
| 7) backup |
| 8) db01 |
| 9) m01 |
| 10) zabbix |
| h) help |
+-------------------------+
EOF
}
#菜单函数
menu
#连接函数
connect(){
ping -c 1 -w 1 $1 &>/dev/null
if [ $? -eq 0 ];then
ssh root@$1
else
echo -e "