Linux Shell编程:系统管理

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

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值