一、操作系统信息获取
1.概述
脚本system_monitor.sh
功能1:提取操作系统信息(内核、系统版本、网络地址等)
功能2:分析系统的运行状态(cpu负载、内存及磁盘使用率等)
基本框架内容:
clear //清屏
if [[ $# -eq 0 ]] //提取位置参数的个数
then
#
reset_teminal=$(tput sgr 0) //定义一个变量作为高亮输出
fi
2.获取操作系统基本信息
# Check OS Type //系统类型
uname -o
#Check OS Release Version and Name //系统版本和主机名
os=$(cat /etc/issue |grep -e "\S"
#Check Architecture //cpu架构
uname -m
#Check Kernel Release //内核版本
uname -r
#Check hostname //主机名
hostname
或者:
uname -n
cat /etc/issue //查看系统版本
3.获取网络配置信息
#Check Internal IP //内网ip
hostname -I
#Check External IP //公网ip
curl -s http://ipecho.net/plain //会将自己的出口ip返回
#Check DNS //dns
cat /etc/resolv.conf |grep -E "\<nameserver[ ]+"|awk '{print $NF}' //根据其配置文件查询出nameserver[ ]格式的数据和其地址,awk作为列筛选。NF是迷人以空格作为分割
#Check if connected to Internet or not //网络是否通畅
ping -c 2 www.baidu.com &>/dev/null && echo "Internet:Connecter" |echo "Internet:Disconnected" //ping两次百度,-c是次数。并将输出结果保存到空文件中,如果成功显示“Internet:Connecter”
#Check Logged In users //当前登录的用户
Who>/tmp/who //输出系统登录的用户,并将其写入到临时文件中
4.脚本优化
rm -rf /tmp/who //清除临时文件的内容,避免输出上一次文件中保存的内容
假如高亮显示等。使得输出美观
脚本内容如下:
执行脚本后的输出结果#!/bin/bash
clear
if [[ $# -eq 0 ]]
then
reset_teminal=$(tput sgr 0)
fi
#Check OS Type
os=$(uname -o)
echo -e '\E[32m'"Operating System Type :" $reset_teminal $os
#Check OS Release Version and Name
os_name=$(cat /etc/issue|grep -e "\S")
echo -e '\E[32m'"Check OS Release Version and Name :"$reset_teminal $os_name
#Check Architecture
architecture=$(uname -m)
echo -e '\E[32m'"Check Architecture :" $reset_teminal $architecture
#Check Kernel Release
kernerrelease=$(uname -r)
echo -e '\E[32m'"Check Kernel Release :" $reset_teminal $kernerrelease
#Check hostname
hostname=$(uname -n)
echo -e '\E[32m'"Check hostnam :" $reset_teminal $hostname
#Check Internal IP
internalip=$(hostname -I)
echo -e '\E[32m'"Check Internal IP :" $reset_teminal $internalip
#Check External IP
externalip=$(curl -s http://ipecho.net/plain)
echo -e '\E[32m'"Check External IP :" $reset_teminal $externalip
#Check DNS
nameserver=$(cat /etc/resolv.conf |grep -E "\<nameserver[ ]+"|awk '{print $NF}')
echo -e '\E[32m'"Check DNS :" $reset_teminal $nameserver
#Check if connected to Internet or not)
ping -c 2 www.baidu.com &>/dev/null && echo "Internet:Connected" ||echo "Internet:Disconnected"
#Check Logged In users
who>/tmp/who
echo -e '\E[32m' "Check Logged In users" $reset_teminal && cat /tmp/who
rm -rf /tmp/who
二、分析系统运行状态
1.分析操作系统内存
系统使用内存和应用使用内存的区别:
系统使用内存=Total-Free
应用使用内存=Total-(Free+Cached+Buffers)
free -m //显示出当前操作系统的状态
cache和buffer区别操作系统运行状态的分析脚本内容:
输出结果图示system_mem_usages=$(awk '/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024}' /proc/meminfo )
echo -e '\E[35m' "System memuserages" $reset_teminal $system_mem_usages
apps_mem_usages=$(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[35m' "Apps memuserages " $reset_teminal $apps_mem_usages
命令详细解释:
图示操作系统运行状态值读取位置:
cat /proc/meminfo
图示取得对应MemTotal第二列的值:
awk '/MemTotal/{print $2}' /proc/meminfo
图示取MemTotal、MenFree第二列的值,并将它赋予到临时变量里,结束运算后输出:
awk '/MemTotal/{total=$2}/MemFree/{free=$2}END{print total,free}' /proc/meminfo
图示计算系统使用内存,并转化为以兆为单位。
awk '/MemTotal/{total=$2}/MemFree/{free=$2}END{print (total-free)/1024}' /proc/meminfo
^Cached //匹配以Cached开头的
2.分析操作系统负载
top -n 1 -b //读取一次,-b将信息打印的更加全面
图示top -n 1 -b |grep "load average:" |awk '{print $10 $11 $12}'
操作系统负载脚本内容:
输出结果图示loadaverge=$(top -n 1 -b |grep "load average:" |awk '{print $10 $11 $12}')
echo -e '\E[33m' "load averges " $reset_teminal $loadaverge
3.分析操作系统磁盘容量
磁盘容量信息过滤掉不需要的内容:
v:反选 E:元字符 P:行列
df -hP|grep -vE 'Filesystem|tmpfs'|awk '{print $1 " " $5}'
操作系统磁盘容量内容脚本:
输出结果图示:diskaverage=$(df -hP|grep -vE 'Filesystem|tmpfs'|awk '{print $1 " " $5}')
echo -e '\E[34m' "disk averges " $reset_teminal $diskaverage
system_monitor.sh的脚本全部内容:
system_monitor.sh
网友评论