8.15 homework

  • ~5.02K 字

  1. 写一个计算年龄的脚本,用户输入出生年份,程序输出 今年多少 xx 岁? (要求该脚本明后年继续使用)
    1.1 要求设置用户输入年份必须在 1900~2025 之间
    1.2 要求用户输入出生年份必须是正整数
    1.3 要求用户不能输入为空
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
read -p "请输入你的出生年份" year
now=$(date +%Y)
if [ -z "$year" ]
then
echo "你的输入为空!"
exit
fi
if [[ $year =~ ^[0-9]+$ ]]
then
if [ $year -le $now ] && [ $year -ge 1900 ]
then
echo '你今年'$(($now-$year))'岁'
else
echo"请输入1900至今的年份!"
fi
else
echo "请输入正整数!"
fi
  1. 写一个猜拳小游戏

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    2. 写一个猜拳小游戏
    # caiquan.sh
    ------------------------
    1. 石头
    2. 剪刀
    3. 布
    ------------------------
    请输入编号: 1

    你赢了,电脑出的剪刀
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #!/bin/bash
    cat <<EOF
    ------------------------
    1. 石头
    2. 剪刀
    3. 布
    ------------------------
    EOF
    read -p "请输入编号:" num
    ai=$[$RANDOM%3+1]
    case $num in
    1)
    case $ai in
    1)
    echo "平局,电脑出的石头"
    ;;
    2)
    echo "你赢了,电脑出的剪刀"
    ;;
    3)
    echo "你输了,电脑出的布"
    ;;
    esac
    ;;
    2)
    case $ai in
    1)
    echo "你输了,电脑出的石头"
    ;;
    2)
    echo "平局,电脑出的剪刀"
    ;;
    3)
    echo "你赢了,电脑出的布"
    ;;
    esac
    ;;
    3)
    case $ai in
    1)
    echo "你赢了,电脑出的石头"
    ;;
    2)
    echo "你输了,电脑出的剪刀"
    ;;
    3)
    echo "平局,电脑出的布"
    ;;
    esac
    ;;
    *)
    echo "请输入一到三的数字!"
    exit
    ;;
    esac

    3.写一个脚本,执行后可看到根分区使用情况:
    1).如果剩余空间在30%以上(包含),则提示: 根分区使用正常,剩余空间为XXG
    2).如果剩余空间在30%(不包含)~15%(不包含),则提示: 根分区空间不多,剩余空间为XX,请及时清理
    3).如果剩余空间低于15%(包含),则提示: 根分区空间告急,剩余空间为XX,请立即清理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
use=$(df -Th /|awk -F" " 'NR==2{print $6}'|tr -d %)
kongjian=$(df -Th /|awk -F" " 'NR==2{print $5}')
have=$((100-$use))
if [ $have -ge 30 ]
then
echo '根分区使用正常,剩余空间为'$kongjian''
elif [ $have -lt 30 ] && [ $have -gt 15 ]
then
echo '根分区空间不多,剩余空间为'$kongjian',请及时清理'
else
echo '根分区空间告急,剩余空间为'$kongjian',请立即清理'
fi

4.写一个脚本,执行后创建系统用户,并设置密码
1). 要求用户名字只能由小写字母组成
2). 要求密码必须为纯数字,且大于6位以上(包含),否则提示不符合条件

#!/bin/bash
read -p "请输入用户名(纯小写字母):" username
if ! [[ "$username" =~ ^[a-z]+$ ]]
then
echo "用户名字只能由小写字母组成!"
exit
fi
read -p "请输入密码,密码必须为纯数字,且大于6位以上:" passwd
len=$(echo -n $passwd|wc -c)
if ! [[ $passwd =~ ^[0-9]+$ ]] || [ $len -lt 6 ]
then
echo "你的密码不符合要求!密码必须为纯数字,且大于6位以上。"
exit
else
useradd $username
echo $passwd | passwd --stdin $username
echo "用户"$username"创建成功"
fi

4.写一个脚本,执行后创建系统用户,并设置密码
1). 要求用户名字只能由小写字母组成
2). 要求密码必须为纯数字,且大于6位以上(包含),否则提示不符合条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
read -p "请输入用户名(纯小写字母):" username
if ! [[ "$username" =~ ^[a-z]+$ ]]
then
echo "用户名字只能由小写字母组成!"
exit
fi
read -p "请输入密码,密码必须为纯数字,且大于6位以上:" passwd
len=$(echo -n $passwd|wc -c)
if ! [[ $passwd =~ ^[0-9]+$ ]] || [ $len -lt 6 ]
then
echo "你的密码不符合要求!密码必须为纯数字,且大于6位以上。"
exit
else
useradd $username
echo $passwd | passwd --stdin $username
echo "用户"$username"创建成功"
fi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
5.写一个脚本,要求输出菜单,执行单个功能完成系统初始化
# bash start.sh
-------------------------------------
系统初始化工具
1. 配置静态IP地址
2. 配置yum源
3. 配置主机名
4. 配置防火墙和Selinux(关闭)
Q/q 退出工具
-------------------------------------
请选择功能: 1
请输入IP地址:
请输入网关:
请输入子网掩码:

"请稍后,正在检测是否配置成功!!!"
"网络已配置正确!!!"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
cat <<EOF
-------------------------------------
系统初始化工具
1. 配置静态IP地址
2. 配置yum源
3. 配置主机名
4. 配置防火墙和Selinux(关闭)
Q/q 退出工具
-------------------------------------
EOF
read -p "请选择功能: " num
case $num in
1)
read -p "请输入IP地址:" ipaddr
read -p "请输入网关:" gateway
read -p "请输入子网掩码:" netmask
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=no
DNS1=114.114.114.114
DNS2=8.8.8.8
IPADDR=$ipaddr
NETMASK=$netmask
GATEWAY=$gateway
EOF
echo ""请稍后,正在检测是否配置成功!!!""
systemctl restart network
ifdown ens33
ifup ens33
if ping -w12 -c5 baidu.com &> /dev/null
then
echo "网络已配置正确!!!"
else
echo "网络配置失败!请检查配置"
fi
;;
2)
read -p "请输入你的yum源类型:" type
read -p "请输入你的yum源名字:" yumname
read -p "请输入你的yum源url:" baseurl
cat > /etc/yum.repo.d/$yumname.repo <<EOF
[$type]
name=$yumname
baseurl=$baseurl
enabled=1
gpgcheck=0
EOF
echo "yum源配置完成!"
;;
3)
read -p "请输入你的主机名:" hostname
cat > /etc/hostname << EOF
$hostname
EOF
echo "主机名已成功修改"
;;
4)
systemctl disable firewalld --now
setenforce 0;sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
echo "firewalld和selinux已禁用!"
;;
esac