一、工具脚本: 需求: 脚本名称: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
|