shell 循环语句

本文介绍了如何使用Shell脚本来创建20个带有特定前缀的用户,用户由用户输入的前缀和数字组成。接着展示了删除这些用户的脚本。最后,文章提供了一个脚本用于检测当前主机同一网段内哪些主机是UP,哪些是DOWN,通过ping命令实现,并解释了ping命令的参数含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1创建20用户 (多种)
用户前缀由用户输入
用户初始密码由用户输入
例如:test01,test10

for

#!/bin/bash
#创建20用户(循环到20{01..20})
#用户自行创建(read -p)
read -p "请输入用户名:" use
read -p "请输入密码:" pswd
for i in {01..20};do
  user=$use$i
  if ! id -u $user &> /dev/null
  then
      useradd $user
      echo "$pswd" | passwd --stdin $user &> /dev/null
  else
      echo "$user 已创建完成"
    fi
done

测试

 由于文件中编辑的是{01..20},所以就显示的是h101~h120

顺便附上删除(while语句)

 #!/bin/bash
read -p "输入用户名" name
i=1
while [ $i -le 20 ]
do
  if [ $i -le 9 ]
  then
    user="$name""0""$i"
  else
    user=$name$i
  fi
  if id -u $user &>/dev/null
  then
    userdel -r $user
  else
    echo "已删除"
  fi
  let i++
done

 

测试

cat  /etc/passwd

 2.测试你当前主机该网段内有哪些主机是UP,哪些是down的。

#!/bin/bash
#循环到20退出,定义变量i,从1循环,每一次i自行+1
#每个循环ping一次IP,能通为up,不通为down
#防止出错,每个循环ping2次(ping -c)
#减少等待时间,提升测试效率(ping -i)
#控制timeout时间为1s
i=1
while [ $i -le 20 ];do
ping -c2 -i0.2 -W1 192.168.40.$i &>/dev/null
  if [ $? -eq 0 ];then
    echo "192.168.40.$i is up"
  else
    echo "192.168.40.$i is down"
  fi
let i++
done
 

由于测试当前主机网段内所有主机,显示时间过长,就只写了20个,测试全网的话改成

while [ $i -le 254 ]即可

附:ping的参数说明(源自菜鸟教程菜鸟教程 - 学的不仅是技术,更是梦想!

对初学者及其友好

  • -d 使用Socket的SO_DEBUG功能。
  • -c <完成次数> 设置完成要求回应的次数。
  • -f 极限检测。
  • -i<间隔秒数> 指定收发信息的间隔时间。
  • -I<网络界面> 使用指定的网络接口送出数据包。
  • -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
  • -n 只输出数值。
  • -p<范本样式> 设置填满数据包的范本样式。
  • -q 不显示指令执行过程,开头和结尾的相关信息除外。
  • -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  • -R 记录路由过程。
  • -s<数据包大小> 设置数据包的大小。
  • -t<存活数值> 设置存活数值TTL的大小。
  • -v 详细显示指令的执行过程。
  • -w <deadline> 在 deadline 秒后退出。
  • -W <timeout> 在等待 timeout 秒后开始执行。

bash测试一下

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值