- 使用case实现成绩优良差的判断
- for创建20用户
用户前缀由用户输入
用户初始密码由用户输入
例如:test01,test10- for ping测试指网段的主机
网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 — 192.168.2.20
UP: /tmp/host_up.txt
Down: /tmp/host_down.txt- 使用for实现批量主机root密码的修改
成功或失败都必须记录
提示:主机IP存放在一个文件中
SSH:实现公钥认证,执行远程中主机命令
实现公钥认证
# ssh-keygen 在用于管理的主上生成密钥对
# ssh-copy-id -i 192.168.2.3
1.使用case实现成绩优良差的判断
[root@wn2 test4]# vim level.sh
[root@wn2 test4]# cat level.sh
#!/bin/bash
###################
#File name:level.sh
#Version:v1.0
#Email:admin@test.come
#Created time:2021-01-21 16:49:43
#Description:
###################
read -p "please enter your score (0-100):" grade
case "$grade" in
8[5-9] | 9[0-9]| 100)
echo "A"
;;
7[0-9] | 8[0-4])
echo "B"
;;
6[0-9])
echo "C"
;;
*)
echo "D"
esac
[root@wn2 test4]# bash level.sh
please enter your score (0-100):76
B
[root@wn2 test4]# bash level.sh
please enter your score (0-100):98
A
[root@wn2 test4]# bash level.sh
please enter your score (0-100):56
D
加上判断条件,改良代码如下:
[root@wn2 test4]# vim level.sh
[root@wn2 test4]# cat level.sh
#!/bin/bash
read -p "please enter your score (0-100):" grade
if [ -n "$grade" ] && expr $grade + 1 &>/dev/null ;then
if [ "$grade" -ge 0 -a "$grade" -le 100 ]
then
case "$grade" in
8[5-9] | 9[0-9]| 100)
echo "A"
;;
7[0-9] | 8[0-4])
echo "B"
;;
6[0-9])
echo "C"
;;
*)
echo "D"
esac
else
echo "please input correct grade!"
exit 1
fi
else
echo "please input a grade!"
exit 2
fi
[root@wn2 test4]# bash level.sh
please enter your score (0-100):54
D
[root@wn2 test4]# bash level.sh
please enter your score (0-100):78
B
[root@wn2 test4]# bash level.sh
please enter your score (0-100):777
please input correct grade!
[root@wn2 test4]# bash level.sh
please enter your score (0-100):
please input a grade!
[root@wn2 test4]# bash level.sh
please enter your score (0-100):a
please input a grade!
2.for创建20用户
用户前缀由用户输入
用户初始密码由用户输入
例如:test01,test10
查看创建是否成功:
[root@wn2 test5]# vim user_add.sh
[root@wn2 test5]# cat user_add.sh
#!/bin/bash
###################
#File name:user_add.sh
#Version:v1.0
#Email:admin@test.come
#Created time:2021-01-21 16:59:23
#Description:
###################
read -p "请输入用户前缀:" head
read -p "请输入用户密码:" password
i=1
while [ $i -le 20 ]
do
if [ $i -le 9 ]
then
user="$head"0"$i"
else
user="$head""$i"
fi
if id -u $user &>/dev/null
then
echo "$user 已存在"
else
useradd $user
echo "$password" | passwd --stdin $user &> /dev/null
fi
let i++
done
[root@wn2 test5]# bash user_add.sh
请输入用户前缀:new
请输入用户密码:123456
相对应删除用户:
[root@wn2 test5]# vim user_del.sh
[root@wn2 test5]# cat user_del.sh
#!/bin/bash
read -p "请输入用户前缀:" head
i=1
while [ $i -le 20 ]
do
if [ $i -le 9 ]
then
user="$head"0"$i"
else
user="$head""$i"
fi
if id -u $user &>/dev/null
then
userdel -r $user
else
echo "用户不存在"
fi
let i++
done
- for ping测试指网段的主机
网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 — 192.168.2.20
UP: /tmp/host_up.txt
Down: /tmp/host_down.txt
[root@wn2 test5]# vim ping.sh
[root@wn2 test5]# cat ping.sh
#!/bin/bash
###################
#File name:ping.sh
#Version:v1.0
#Email:admin@test.come
#Created time:2021-01-21 18:19:20
#Description:
###################
read -p "请输入网段:" ip
for i in {10..20}
do
IP="$ip"."$i"
echo $IP
if ping -c 1 $IP >/dev/null
then
echo "$IP is up" >> /tmp/host_up.txt
else
echo "$IP is down" >> /tmp/host_down.txt
fi
done
[root@wn2 test5]# bash ping.sh
请输入网段:192.168.2
192.168.2.10
192.168.2.11
192.168.2.12
192.168.2.13
192.168.2.14
192.168.2.15
192.168.2.16
192.168.2.17
192.168.2.18
192.168.2.19
192.168.2.20
[root@wn2 test5]# cat /tmp/host_down.txt
192.168.2.10 is down
192.168.2.11 is down
192.168.2.12 is down
192.168.2.13 is down
192.168.2.14 is down
192.168.2.15 is down
192.168.2.16 is down
192.168.2.17 is down
192.168.2.18 is down
192.168.2.19 is down
192.168.2.20 is down
4.使用for实现批量主机root密码的修改
成功或失败都必须记录
提示:主机IP存放在一个文件中
SSH:实现公钥认证,执行远程中主机命令
实现公钥认证
[root@wn2 test5]# cat ssh.sh
#!/bin/bash
###################
#File name:ssh.sh
#Version:v1.0
#Email:admin@test.come
#Created time:2021-01-22 14:16:00
#Description:
###################
#产生公私钥,-P是指定密码为空
ssh-keygen -f /root/.ssh/id_rsa -P '' -q &>/dev/null
for ip in `cat ipfile`
do
echo $ip
ssh-copy-copy-id root@$ip
done
for ip in `cat ipfile`
do
echo $ip
ssh root@ip "echo redhat | passwd --stdin root" &>/dev/null
if [ "$?" -eq 0 ];then
echo "host $ip successfully update passwd"
else
echo "host $ip error update passwd"
fi
done