近期在学习shell。老大让写一个读取系统配置信息的脚本当作练习和工作验收,我就写了这么一个脚本,读取操作系统,内核,网卡,cpu,内存,磁盘等信息,目的是让看的人一眼就能看出这台机子的配置以及眼下的执行状况:

#!/bin/bash
#Get system infomation
(
sys_time=$(date +"%Y-%m-%d %k:%M:%S")
#os_version=$(lsb_release -a | sed -n '/Description/p' | awk -F '[:]' '{print $2}' | sed 's/^[[:space:]]*//')
os_version=$(cat /etc/issue | grep Linux)
kernel_release=$(uname -r)
netcard_num=$(ifconfig -a | grep eth | wc -l)
echo "[public_info]"
echo -e "sys_time=$sys_time\t#系统时间"
echo -e "os_version=$os_version\t#操作系统版本号"
echo -e "kernel-release=$kernel_release\t#内核版本号" #########NETCADE INFOMATION##########
echo
echo "[netcard_info]"
echo "netcard_num=$netcard_num"
echo "#网卡名字|IP|MAC|网卡驱动|网卡速率|网卡发送流量(bytes)|网卡接收流量(bytes)|网卡总流量(bytes)"
for((n=0;n<$netcard_num;n++))
do
Receive_byte=$(cat /proc/net/dev | grep eth$n | awk '{print$2}')
Send_byte=$(cat /proc/net/dev | grep eth$n | awk '{print$10}')
echo "netcard_$((n+1))=eth$n|\
$(ifconfig eth$n | grep "inet addr" | awk '{print$2}' | awk -F'[:]' '{print$2}')|\
$(ifconfig -a | grep eth$n | awk '{print$5}')|\
$(ethtool eth$n | grep Speed | awk '{print$2}' | sed 's/^[[:space:]]*//')|\
${Receive_byte}|\
${Send_bytei}|\
$(($Receive_byte + $Send_byte))"
done ##########CPU INFOMATION##############
cpu_phical_count=$(cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l)
cpu_model=$(cat /proc/cpuinfo | grep "model name" | uniq | awk -F'[:]' '{print$2}')
cpu_core_num=$(cat /proc/cpuinfo | grep cores | uniq | awk -F'[:]' '{print $2}' | sed 's/^[[:space:]]*//')
cpu_process_num=$(cat /proc/cpuinfo | grep process | wc -l)
cpu_frequency=$(cat /proc/cpuinfo |grep MHz|uniq | awk -F'[:]' '{print $2}' | sed 's/^[[:space:]]*//')
cache_size=$(cat /proc/cpuinfo | grep "cache size" | uniq | awk -F'[:]' '{print$2}')
cpu_idle=$(mpstat | grep all | awk '{print$11}')
cpu_used=$(mpstat | grep all | awk '{print$3}')
echo
echo "[cpu_info]"
echo -e "cpu_model=$cpu_model\t#cpu型号"
echo -e "cpu_core_num=$cpu_core_num\t#cpu核数"
echo -e "cpu_phical_count=$cpu_phical_count\t#cpu个数"
echo -e "cpu_frequendy=$cpu_frequency\t#主频/单个"
echo -e "cache_size=${cache_size}*$cpu_process_num\t#缓存"
echo -e "cpu_idle=${cpu_idle}%\t#空暇率"
echo -e "cpu_used=${cpu_used}%\t#使用率" ###########memeber info###############
echo
echo "[mem_info]"
echo -e "mem_total=$(free -m | grep Mem | awk '{print$2}')\t#总内存"
echo -e "mem_used=$(free -m | grep buffers/cache | awk '{print$3}')\t#已使用"
echo -e "mem_free=$(free -m | grep buffers/cache | awk '{print$4}')\t#可使用" ###########hard info ##################
file_system_num=$(df -Ph | grep / | wc -l)
echo
echo "[hard_info]"
echo "file_system_num=$file_system_num"
echo "#磁盘总容量(单位M)|已用容量(单位M)|可用流量(单位M)|已用百分比(%)|挂载文件夹"
df -Pm | grep / | awk '{print$2"|"$3"|"$4"|"$5"|"$6}'
exit 0
) >system_infomation.txt

执行的结果是这个样子的:

[public_info]

sys_time=2014-12-18 11:42:43 #系统时间

os_version=Red Hat Enterprise Linux Server release 6.4 (Santiago)
#操作系统版本号

kernel-release=2.6.32-358.el6.i686 #内核版本号





[netcard_info]

netcard_num=4

#网卡名字|IP|MAC|网卡驱动|网卡速率|网卡发送流量(bytes)|网卡接收流量(bytes)|网卡总流量(bytes)

netcard_1=eth0||28:51:32:04:68:31|1000Mb/s|6863054||13709858

netcard_2=eth1||28:51:32:04:68:32|Unknown!|0||0

netcard_3=eth2||28:51:32:04:68:33|1000Mb/s|6846296||13709858

netcard_4=eth3|192.168.6.193|28:51:32:04:68:34|1000Mb/s|209054928||209117419





[cpu_info]

cpu_model= Intel(R) Atom(TM) CPU D525   @ 1.80GHz
#cpu型号

cpu_core_num=2 #cpu核数

cpu_phical_count=1 #cpu个数

cpu_frequendy=1800.000 #主频/单个

cache_size= 512 KB*4 #缓存

cpu_idle=99.60% #空暇率

cpu_used=0.06% #使用率





[mem_info]

mem_total=993 #总内存

mem_used=566 #已使用

mem_free=427 #可使用





[hard_info]

file_system_num=4

#磁盘总容量(单位M)|已用容量(单位M)|可用流量(单位M)|已用百分比(%)|挂载文件夹

162650|17438|136950|12%|/

497|0|497|0%|/dev/shm

291|31|245|12%|/boot

78745|815|73931|2%|/home

读取系统执行状态的shell脚本的更多相关文章

  1. 【linux】系统初始化的shell脚本

    根据参考网上的一些文章,总结出来一个系统初始化的shell脚本 1.初始化脚本 #!/bin/bash cat << EOF +------------------------------ ...

  2. 不同系统执行相同shell脚本,出现Syntax error: "(" unexpected错误解决

    例如shell脚本在centos系统中能正常执行,而在ubuntu系统中执行会出现类似Syntax error: "(" unexpected的错误,一般这种是因为sh与bash有 ...

  3. linux服务器系统负载监控-shell脚本

    一.监控服务器系统负载情况: 1.用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况) # uptime   15:43:59 up 186 days, 20:04,  1 us ...

  4. linux系统配置文件或shell脚本批量注释

    1. 配置文件批量注释 1.1 批量注释 ① 进入命令行模式,按ctrl + v进入 visual block模式,键盘上下箭头选中多行,把需要注释的行标记起来 ② 按大写字母I,再输入注释符:# ③ ...

  5. 关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题

    关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主 ...

  6. 关于nagios系统下使用shell脚本自定义监控插件的编写

    在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios ...

  7. linux系统中实用shell脚本,请收藏!

    1.Dos攻击防范(自动屏蔽攻击 IP) #!/bin/bashDATE=$(date +%d/%b/%Y:%H:%M)LOG_FILE=/usr/local/nginx/logs/demo2.acc ...

  8. linux系统下的shell脚本

    #!/bin/bash  说明我需要启用bin目录下的bash解释器解释脚本##将第一个文件拷贝到第二个文件,如果出错将错误输出到/dev/null 的空.if判断cp的返回值是否为1,1为成功,0为 ...

  9. LINUX系统自动化部署shell脚本

    #!/bin/shsudo /etc/init.d/tomcatstopwaitsudo rm -rf /opt/tomcat7/work/*waitsudo rm -rf /opt/tomcat7/ ...

随机推荐

  1. SpringBoot优化内嵌的Tomcat

    SpringBoot测试版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId ...

  2. Mysql explain 查看分区表

    mysql> explain select * from ClientActionTrack where startTime>'2016-08-25 00:00:00' and start ...

  3. boost::asio 使用 libcurl

    curl 使用 asio 的官方样例 http://curl.haxx.se/libcurl/c/asiohiper.html, 但这个例子用起来有很明细的 bug,asio 异步IO 只注册一次,也 ...

  4. 电子科大POJ "整数的千位分隔"

    整数的千位分隔 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) C-source ...

  5. Codeforces Round #258 (Div. 2/B)/Codeforces451B_Sort the Array

    解题报告 http://blog.csdn.net/juncoder/article/details/38102391 对于给定的数组,取对数组中的一段进行翻转,问翻转后是否是递增有序的. 思路: 仅 ...

  6. 这辆车已覆盖免费wifi

    上周在前面,首页特意下载了几部电影.即使步行到完成下载任务之前,,也推高了十分钟.所述无线网络和赶车之间,其实,我选择了前者. 真的很可怕大胆,要知道.其他人可能是买不来的旅行. 幸运的是,.速度依然 ...

  7. uva 748 Exponentiation 浮点数乘方运算 高精度水题

    输入的前六位数表示一个小数,然后输入一个数表示几次方.要求用高精度算出结果. 高精度水题,主要注意处理小数点,先在输入时把小数点提取出来并记录位置,用普通乘法计算出结果后由后向前计算位置添加小数点. ...

  8. 【贪心+背包】【HDU2546】【饭卡】

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  9. (原)前端知识杂烩(meta系列)

    更新于 20160831 1. meta 移动端头文件设置 (一般情况下,逐条复制放在头部就可以了) 1.1 强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏 ...

  10. 解决IP地址被占用问题

    问题背景: 在公司一直有同事在抱怨IP地址总是被占用的问题,我决定用技术解决这个问题 解决方案: 1 最开始想在防火墙里面做IP和mac地址绑定,做了几个之后,还是有同事在说IP被占用,后来 分析了一 ...