1、用户管理
使用Shell脚本批量创建多个用户,并为用户设置密码,其操作过程如下。
①创建需添加用户的文件,通过“vi users”命令创建用户列表。
# vi users
admin1
admin2
tempuser1
tempuser2
②编写Shell脚本(01.sh)进行用户创建和密码生成。
#!/bin/bash
#进行批量用户创建Shell脚本
#
#通过读取user文件获取需要创建的用户名信息
for username in $(more user)
do
#判断需要创建的用户名是否存在
if [ -n $username ]
then
useradd -m $username
#批量设置用户的密码为用户名加“@123”,并输出系统回显结果
echo $username"@123" | passwd --stdin $username
echo "User $username's password is changed!"
else
echo "Ther username is null!"
fi
done
③将用户文件和脚本放入在同一个目录下进行执行,执行结果如图1所示。
# /bin/sh 01.sh
2、进程管理
定时检测系统中进程状态,当发现进程死掉后,执行服务程序启动,再次通过Shell脚本开启服务进程,其操作过程如下所示。
①编写Shell脚本(02.sh)进行进程检测。
#!/bin/bash
#进行进程检测创建Shell脚本
#
#使用while进行循环检测
while true
do
#通过查看系统正在运行的进程名为“httpd”的个数,出去自身执行通过grep查询出的结果
procnum=`ps -ef | grep "httpd" | grep -v grep | wc -l`
#如果系统中运行的“httpd”进程为0个
if [ ${procnum} -eq 0 ]
then
#进行后台执行启动httpd服务进程
echo "httpd Server start"
/etc/init.d/httpd restart &
fi
#睡眠10秒,每10秒执行一次
sleep 10
done
②进行Shell脚本执行,并在脚本执行过程中,关闭系统的httpd服务,查看脚本是否能够将httpd服务再次启动,执行结果如图2所示。
# /bin/sh 02.sh
3、网络流量
使用Shell脚本查看Linux下某网卡的流量情况,具体操作如下。
①编写Shell脚本(03.sh)输出网卡流量信息,并进行格式化输出。
#!/bin/bash
#进行网卡流量输出创建Shell脚本
while [ "1" ]
do
#指定需要查询的网卡名称
eth=$1
#获取接收数据包信息
RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
#获取发送数据包信息
TXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
#睡眠1秒,用于计算网络流量
sleep 1
#获取服务器接收和发送
RXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')
TXnext=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $10}')
clear
#清除当前显示信息,在最上方显示标题
echo -e "\t RX `date +%k:%M:%S` TX"
RX=$((${RXnext}-${RXpre}))
TX=$((${TXnext}-${TXpre}))
#进行流量单位换算
if [[ $RX -lt 1024 ]];then
RX="${RX}B/s"
elif [[ $RX -gt 1048576 ]];then
RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
else
RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
fi
if [[ $TX -lt 1024 ]];then
TX="${TX}B/s"
elif [[ $TX -gt 1048576 ]];then
TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
else
TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
fi
echo -e "$eth \t $RX $TX "
done
②进行Shell脚本执行,并在脚本执行过程中输出网卡流量信息,执行结果如图2所示。
# /bin/sh 03.sh eth0