for循环的基本应用
for循环的基本应用
for的结构语法
for 变量名 in 取值列表
do
命令序列
done
使用for循环创建用户
创建for创建循环用户脚本
#!/bin/bash
userlist=$(cat /root/userlist.sh)
for username in $userlist
do
useradd $username
echo “[email protected]” | passwd --stdin $username && > /dev/null
done
~
添加执行权限
[[email protected] ~]# chmod +x adduser.sh
运行脚本
查看是否创建成功
[[email protected] ~]# cat /etc/passwd
定义删除用户列表脚本
运行脚本在查看是否删除
[[email protected] ~]# ./deluser.sh 运行脚本
[[email protected] ~]# cat /etc/passwd 查看etc文件
使用for脚本测试主机联通性
创建主机列表
[[email protected] ~]# vim hostlist.txt
192.168.100.10
192.168.100.20
192.168.100.80
创建ping测试主机脚本
#!/bin/bash
hostlist=$(cat /root/hostlist.txt)
for host in $hostlist
do
ping -c 3 -i 0.2 -W 3 $host &> /dev/null
if [ $? -eq 0 ]
then
echo “host $host is UP!!!”
else
echo “host $host is DOWN!!”
fi
done
添加运行权限
[[email protected] ~]# chmod +x ./pinghost.sh
运行脚本
判断用户输入IP地址是否开机
编写脚本
#!/bin/bash
#hostlist=$(cat /root/hostlist.txt)
read -p “请输入IP地址:” hostlist
for host in $hostlist
do
ping -c 3 -i 0.2 -W 3 $host &> /dev/null
if [ $? -eq 0 ]
then
echo “host $host is UP!!!”
else
echo “host $host is DOWN!!”
fi
done
运行脚本
while循环
while的语法结构
while 条件
do 命令序列
done
使用while循环创建用户
创建脚本
#!/bin/bash
hostname=“stu”
i=1
while [ $i -le 20 ]
do
useradd
h
o
s
t
n
a
m
e
{hostname}
hostnamei
echo “[email protected]”| passwd --stdin
h
o
s
t
n
a
m
e
{hostname}
hostnamei &> /dev/null
let i++
done
添加执行权限
[[email protected] ~]# chmod +x whileadduser.sh
查看是否创建
[[email protected] ~]# cat /etc/passwd
批量化删除创建的用户
#!/bin/bash
hostname=“stu”
i=1
while [ $i -le 20 ]
do
userdel -r
h
o
s
t
n
a
m
e
{hostname}
hostnamei
let i++
done
再次查看有没有创建的账户
[[email protected] ~]# cat /etc/passwd
运行脚本删除用户
case分支
case语法结构
case 变量值 in
模式1 )
命令序列1
; ;
模式2 )
命令序列2
; ;
*)
默认命令序列
Esac
编写判断用户输入的是数字字符或者符号
编写测试脚本
#!/bin/bash
read -p “请输入判断内容:” test
case “$test” in
[a-z] | [A-Z])
echo “你输入的是字母! ! !”
;;
[0-9])
echo “你输入的是数字! ! !”
;;
*)
echo “你输入的是符号! ! !”
esac
~
添加权限
运行脚本
使用case编写服务控制脚本
创建服务控制脚本
#!/bin/bash
case “$1” in
start)
echo -n “启动vsftpd服务…”
;;
stop)
echo -n “停止vsftpd服务…”
pkill “vsftpd” &> /dev/null
echo “ok”
;;
status)
if pgrep “vsftpd” &>/dev/null; then
echo “vsftpd服务已经启动…”
else
echo “vsftpd服务停止…”
fi
;;
restart)
$0 stop
$1 start
;;
*)
echo “用法:$0 {start|stoo|restart|status}”
esac
~
运行脚本测试
[[email protected] ~]# ./vsftpd.sh start
终止vsftpd服务
[[email protected] ~]# ./vsftpd.sh stop