实验楼挑战:shell脚本 获取系统信息

题目

小楼是一个系统管理员,需要编写一个脚本 getinfo.sh 获取 Linux 服务器的 CPU、内存等信息。

脚本 getinfo.sh 脚本执行时候不需要任何参数,输出的内容包括以下信息:

$ bash getinfo.sh
cpu num: 2
memory total: 2.8G
memory free: 329M
disk size: 10G
system bit: 32
process: 32
software num: 944
ip: 192.168.1.9
注意上述每行内容的冒号后都有一个空格。

其中包括的数据项:

CPU数量(cpu num)
总内存(memory total),单位为 G
可用内存(memorty free),单位为 M
挂载到 / 根目录的文件系统的总大小(disk size),单位为 G
系统位数(system bit)
当前系统正在运行的进程数(process)
查看已安装的软件包数量(software num)
eth0的ip地址(ip)
目标

脚本存放的路径必须在 /home/shiyanlou/getinfo.sh
输出的信息一共有 8 行,需要按照上面给出的示例的顺序
脚本执行过程及输出信息需要满足上述需求
提示

awk
sed
知识点

Linux 系统监控命令
Linux 上文本处理命令
Linux 上软硬件信息获取

我的实现

#!/bin/bash

echo cpu num: $(cat /proc/cpuinfo |grep processor|wc -l)

free -h |grep Mem |awk '{printf "memory total: "$2 "\n"  "memory free: "$4 "\n"}'
df -h |grep "/$" | awk '{printf "disk size: " $2 "\n"}'

echo system bit: $(getconf LONG_BIT)


echo process: $(ps -A |wc -l)

echo software num:$(dpkg -l |wc -l)


官方答案


#!/bin/bash
echo "cpu num:"   `grep processor /proc/cpuinfo|wc -l`
echo "memory total:" `free -g|grep "Mem:"|awk '{print $2}'`G
echo "memory total:" `free -m|grep "Mem:"|awk '{print $4}'`M
echo "disk szie:" `df -h /|grep "/$"|awk '{print $2}'`
if [ `uname -m` = 'x86_64' ];then
echo "system bit: 64"
else
echo "system bit: 32"
fi
echo "process:" `ps axu|wc -l`
echo "software num:" `dpkg -l|wc -l`
echo "ip:" `ifconfig eth0|grep "inet "|awk '{print $2}'|awk -F":" '{print $2}'`

总结

echo "ip: " (ifconfig eth0|grep "inet "|awk '{print $2}'|awk -F":" '{print $2}')

我就卡在此处,它通过两次使用awk 巧妙解决,很初级,但我。。

你可能感兴趣的:(实验楼挑战:shell脚本 获取系统信息)