一、工具脚本:
需求:
脚本名称:cpu.sh
脚本功能:采集服务器中所有进程cpu总量之和并生成报告
报告格式:
cpu used: xxx%
步骤:
1.先在脚本文件中尝试写入简单查询语句
[root@localhost Desktop]# vim cpu.sh
#!/bin/bash
ps ax -o %cpu
~
[root@localhost Desktop]# sh cpu.sh
%CPU
0.7
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.1
0.0
0.0
2.发现上述显示内容与理想呈现相比需要消去%CPU以及0.0的数据
[root@localhost Desktop]# vim cpu.sh
#!/bin/bash
ps ax -o %cpu | awk '!/%CPU|0.0/{print $1}'
~
[root@localhost Desktop]# sh cpu.sh
0.2
0.2
0.1
0.3
1.0
0.2
0.5
3.0
0.3
0.3
0.2
0.4
0.1
0.2
3.对结果进行相加计算,并进一步对显示结果进行规范性修改
[root@localhost Desktop]# vim cpu.sh
#!/bin/bash
ps ax -o %cpu | awk '!/%CPU|0.0/{CPU+=$1}END{print }'
~
[root@localhost Desktop]# sh cpu.sh
0.0
[root@localhost Desktop]# vim cpu.sh
#!/bin/bash
ps ax -o %cpu | awk '!/%CPU|0.0/{CPU+=$1}END{print "cpu used: "CPU"%" }'
~
~
[root@localhost Desktop]# sh cpu.sh
cpu used: 8.8%
4.实现监控功能,即每秒钟更新一次
#!/bin/bash
while true
do
ps ax -o %cpu | awk '!/%CPU|0.0/{CPU+=$1}END{print "cpu used: "CPU"%" }'
sleep 1
done
~
[root@localhost Desktop]# vim cpu.sh
[root@localhost Desktop]# sh cpu.sh
cpu used: 5.9%
cpu used: 5.7%
cpu used: 5.4%
cpu used: 5.2%
^C
5.为方便观看设置每秒钟显示的内容与上次出现在同一行
#!/bin/bash
while true
do
echo -ne ` ps ax -o %cpu | awk '!/%CPU|0.0/{CPU+=$1}END{print "cpu used: "CPU"% " }'`
echo -ne "\r"
sleep 1
done
~
~
[root@localhost Desktop]# vim cpu.sh
[root@localhost Desktop]# sh cpu.sh
cpu used: 3.5%
PS:若出现有多个%同时出现的情况可将脚本中的%后面多打几个空格
二、用户审计:
需求:
脚本名称:usercheck.sh
脚本功能:采集系统中所有等被su - 切换并且家目录不在/home中的用户的个数并生成报告
报告格式:
home sp user number: x
#!/bin/bash
getent passwd |awk -F : 'BEGIN{N=0}$6!~/^\/home/&&/bash$|sh$|csh$|tcsh$/{N++}END{print "home sp user number: " N}'
[root@localhost Desktop]# vim usercheck.sh
[root@localhost Desktop]# sh usercheck.sh
home sp user number: 1
三、
需求:判定网卡是否存在
如果存在显示其ip如果不存在显示其不存在
脚本名称:
ipaddr_show.sh 网卡名称
#!/bin/bash
[ -z $* ] && {
echo "ERROR:Please enter the network $0"
}||{
DEVICE_STATE=`ifconfig $* 2> /dev/null` &&{
IPADDR=`echo $DEVICE_STATE | awk '/inet\>/{print $6}'`
[ -n "$IPADDR" ] && {
echo $IPADDR
}||{
echo $1 is not have ipaddress!!
}
}||{
echo $1 is not exist
}
}
[root@localhost Desktop]# vim ipaddr_show.sh
[root@localhost Desktop]# sh ipaddr_show.sh
ERROR:Please enter the network ipaddr_show.sh
[root@localhost Desktop]# sh ipaddr_show.sh ens160
192.168.43.50
[root@localhost Desktop]# sh ipaddr_show.sh ens161
ens161 is not exist