功能一:能够提取操作系统的基本信息(内核、系统版本、网络地址等)
#############################################################################
#File Name:System_monitor.sh
#Author:Ivan
#############################################################################
#!/bin/bash
#把之前屏幕上的内容清除掉
clear
if [[ $# -eq 0 ]]
then
echo -e ‘\E[33m‘"###########系统分析##########"
#定义一个高亮输出的变量
output=$(tput sgr0)
#检查系统类型 使用uname -o 命令
os=$(uname -o)
echo -e ‘\E[32m‘"系统类型:"$output $os
#获取操作系统版本类型
os_name=$(cat /etc/issue |grep -ie "Server")
echo -e ‘\E[33m‘"系统版本:"$output $os_name
#获取CPU的指令集
os_bit=$(uname -m)
echo -e ‘\E[34m‘"系统位数:"$output $os_bit
#获取内核版本
os_kernel=$(uname -r)
echo -e ‘\E[35m‘"内核版本:"$output $os_kernel
#获取主机名 $HOSTNAME 以及 uname -n 也可以实现
hostname=$(hostname)
#获取内网ip
inner=$(hostname -I)
echo -e ‘\E[36m‘"内网ip:"$output $inner
#获取外网ip 我们就简单使用请求这个http地址后返回的信息
outer=$(curl -s http://ipecho.net/plain)
echo -e ‘\E[29m‘"外网ip:"$output $outer
#获取DNS 从/etc/resolv.conf文件提取匹配
nameservers=$(cat /etc/resolv.conf |grep -E "\<nameserver[ ]"+|awk ‘{print $NF}‘)
echo -e ‘\E[31m‘"系统DNS:"$output $nameservers
#判断网络连通性 直接使用ping命令测试
ping -c 2 www.toutiao.com &>/dev/null && echo "网络连通:yes" || echo "网络连通:no"
#检查当前登录的用户 使用who命令输出到一个临时文件中
who >/tmp/who
echo -e ‘\E[32m‘"当前登录用户:"$output && cat /tmp/who
#记得把临时文件给删掉
rm -rf /tmp/who
echo "#############################"
#功能二:能够分析系统的运行状态(CPU负载、内存以及磁盘的使用率等)
#使用free -m 可以查看内存的使用情况
#我们要取的是系统使用内存和应用使用内存
#系统使用内存=total-free 而 应用使用内存=total-(free+buffers+cached)
#在/proc/meminfo文件就是内存情况的目录
#获取系统已经使用的内存通过awk命令文本进行提取然后计算出结果换算成Mb
system_men=$(awk ‘/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024}‘ /proc/meminfo)
#获取应用使用内存通过awk命令文本进行提取然后计算出结果换算成Mb
app_men=$(awk ‘/MemTotal/{total=$2}/MemFree/{free=$2}/^Cached/{cached=$2}/Buffers/{buffers=$2}END{print (total-free-cached-buffers)/1024}‘ /proc/meminfo)
#打印出结果
echo -e ‘\E[36m‘"系统使用内存:"$output $system_men"M"
echo -e ‘\E[36m‘"应用程序使用内存:"$output $app_men"M"
#接下来就是操作下系统CPU负载这一块了,我们可以用top命令进行查看
#top -n 1 -b|grep "load average:"
#再使用awk进行空格划分提取我们想要的load average
#top -n 1 -b|grep "load average:"|awk ‘{print $12 $13 $14}‘
load_average=$(top -n 1 -b|grep "load average:"|awk ‘{print $12 $13 $14}‘)
echo -e ‘\E[33m‘"负载情况:"$output $load_average
#最后就是磁盘分析了,老规矩,首先我们使用df -h 命令看看
#在我们就来将它格式化输出一下
#df -hP|grep -vE ‘Filesystem|tmpfs‘|awk ‘{print $1 " Size:"$2 " used:"$3 " use%:"$5}‘
disk=$(df -hP|grep -vE ‘Filesystem|tmpfs‘|awk ‘{print $1 " 总量:"$2 " 已使用:"$3 " 使用率:"$5}‘)
echo -e ‘\E[34m‘"磁盘情况:"$output $disk
else
echo "请不要传递参数!"
fi
注意:标红色字体的,可以不加入到脚本中
运行后的效果:
###########系统分析##########
系统类型: GNU/Linux
系统版本: CentOS release 6.6 (Final)
系统位数: x86_64
内核版本: 2.6.32-504.el6.x86_64
内网ip: 172.16.1.237
外网ip: x.x.x.x
系统DNS: 8.8.8.8 211.136.192.6
网络连通:yes
当前登录用户:
root pts/1 2017-01-12 20:14 (x.x.x.x)
#############################
系统使用内存: 3387.73M
应用程序使用内存: 1084.01M
负载情况: 0.00,0.00,0.00
磁盘情况: /dev/mapper/vg_itcacti-LogVol00 总量:287G 已使用:3.9G 使用率:2% /dev/sda1 总量:477M 已使用:32M 使用率:8%