近期在学习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. intro

    懒得自己折腾wordpress又很想写博客. 作为一名把自己当成programmer的data scientist,毅然选择了博客园. 这里我想内容就是平时学到/使用的各种心得,更新频率不定. 兴趣范 ...

  2. Ubuntu12.04 Jdk1.7 Tomct7.0部署配置

    jdk1.7 下载 http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz?AuthParam=1 ...

  3. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解

    摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...

  4. Apple Mach-O Linker Warning 警告解决的方法

    此警告解决的方法: 项目名字 -> targets -> Build Settings -> search path 把里面无用的东西 点 减号 删掉 即可了. $(function ...

  5. (原) Jquery 判断移动设备是IOS / Android系统

    var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...

  6. UVA 10570 Meeting with Aliens

    题意: N个外星人围成一桌坐下,有序的排列指N在N-1与N+1中间,现在给出一个序列,问至少交换几次可以得到有序的序列. 分析: 复制一遍输入序列,放在原序列之后.相当于环.通过枚举,可以把最小交换次 ...

  7. Mac下Mysql启动异常["ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"]

    在mac下使用brew安装mysql,之前没有使用过,今天启动的时候发现启动不了 huijundeMacBook-Pro:bin huijunzhang$ mysql ERROR (HY000): C ...

  8. SVN(一次检出&二次检出)

    一次检出: >进入经历文件夹 >输入svn checkout指令 >输入电脑密码 >输入用户名 >输入密码 >检出成功 第二次检出: >进入小涛文件夹 > ...

  9. 自定义不等高的cell-(storyboard)

    对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView之间的间距约束 设置tableViewCell的真实行高和估算行高 // 告诉tableView所有 ...

  10. ajax读取txt文件

    注意url为网络路径 <html><head><script type="text/javascript">  function loadXML ...