shell第四次作业(流程控制之循环)

11 篇文章 0 订阅
11 篇文章 0 订阅
  1. 使用case实现成绩优良差的判断
  2. for创建20用户
    用户前缀由用户输入
    用户初始密码由用户输入
    例如:test01,test10
  3. for ping测试指网段的主机
    网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 — 192.168.2.20
    UP: /tmp/host_up.txt
    Down: /tmp/host_down.txt
  4. 使用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

  1. 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
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值