ubuntu体检系统-上篇
一、目标要求:
1、使用shell脚本开发。
2、无参数运行时显示说明。根据不同参数,输出到屏幕或文件或两边都输出。输出到文件时,提示用户输入目录及文件名。根据用户输入内容建立目录。
3、体检内容至少包括:主机基本情况、目录基本情况、用户及组情况、硬盘基本情况、进程基本情况、网络基本情况。
4、通过任务计划执行脚本
5、通过LAMP平台展示脚本执行结果。
5.1 设计表,体检结果分时间、项目存进mysql数据库。
5.2 使用php语言,通过apache发布网页,从数据库获取体检结果展示。
6、通过C语言从数据库获取数据,展示体检结果。
需要的环境:
Ubuntu、mysql、Apache、php7
二、系统方案设计
创建一个脚本,并编写程序
在linux下先创建一个文件夹用本项目开发。并且进入
mkdir linuxshiyan
cd linuxshiyan
创建shell脚本
touch test.sh
这里之后我用的是VScode打开这样编译方便,不用也没关系,用vi直接将代码复制粘贴就好了。
编写程序
运行此脚本,显示运行结果
三、实现过程
1.用case语句选择3种方式输出到屏幕或文件或两边都输出
sleep 0.5s
echo "体检开始."
sleep 1s
echo "请选择检查方式1(体检\)2(输出到文件\)3(输出到屏幕同时也输出到文件)(input number 1 or 2 or 3 )"
read a
case $a in
输出结果:
2.输入1为输出到屏幕
就是边输入边存入
1)echo "1:输出到屏幕:"
sleep 1s
1)输出主机基本情况:uname -a
echo "1.主机基本情况:"
echo "1.主机基本情况:"> PE.txt
time1=$(date "+ %H:%M:%S") //创建当时的时间
echo $time1 >> PE.txt //存入该时间
echo $time1
uname -a > 1.txt
uname -a >> PE.txt
sleep 1s
uname -a
sleep 1s
输出结果:
2)目录基本情况:ls -alF
echo "2.目录基本情况:"
echo "2.目录基本情况:">> PE.txt
time2=$(date "+ %H:%M:%S")
echo $time2 >> PE.txt
echo $time2
sleep 1s
ls -alF > 2.txt
ls -alF >> PE.txt
ls -alF
sleep 1s
输出结果:
3)输出用户基本情况:sudo cat /etc/passwd
echo "3.用户基本情况:"
echo "3.用户基本情况:">> PE.txt
time3=$(date "+ %H:%M:%S")
echo $time3 >> PE.txt
echo $time3
sleep 1s
sudo cat /etc/passwd > 3.txt
sudo cat /etc/passwd >> PE.txt
sleep 1s
sudo cat /etc/passwd
sleep 1s
输出结果:
4)输出组基本情况:sudo cat /etc/group
echo "4.组基本情况:"
echo "4.组基本情况:">> PE.txt
time4=$(date "+ %H:%M:%S")
echo $time4 >> PE.txt
echo $time4
sleep 1s
sudo cat /etc/group > 4.txt
sudo cat /etc/group >> PE.txt
sleep 1s
sudo cat /etc/group
sleep 1s
输出结果:
5)输出硬盘基本情况:sudo fdisk -l
echo "5.硬盘基本情况:"
echo "5.硬盘基本情况:">> PE.txt
time5=$(date "+ %H:%M:%S")
echo $time5 >> PE.txt
echo $time5
sleep 1s
sudo fdisk -l > 5.txt
sudo fdisk -l >> PE.txt
sleep 1s
sudo fdisk -l
sleep 1s
输出结果:
6)输出进程基本情况:ps -A
echo "6.进程基本情况:"
echo "6.进程基本情况:">> PE.txt
time6=$(date "+ %H:%M:%S")
echo $time6 >> PE.txt
echo $time6
sleep 1s
ps -A > 6.txt
ps -A >>PE.txt
sleep 1s
ps -A
sleep 1s
输出结果:
7)输出网络基本情况:ifconfig
echo "7.网络基本情况:"
echo "7.网络基本情况:">> PE.txt
time7=$(date "+ %H:%M:%S")
echo $time7 >> PE.txt
echo $time7
sleep 1s
ifconfig > 7.txt
ifconfig >> PE.txt
sleep 1s
ifconfig
sleep 1s
输出结果:
3、输入2输出到文件
2)echo "2:输出到文件:"
echo "输入目录的名称:"
read dir
echo "输入文件名称:"
read proj
mkdir $dir
touch $proj
cat PE.txt > $proj
mv -n $proj $dir
sleep 1s
ls
echo "目录 $dir 和 文件 $proj 创建成功"
;;
结果:
4、输入3输出到文件
3)echo "3:输出到屏幕和文件:"
echo "输入目录的名称:"
read dir
echo "输入文件名称:"
read proj
mkdir $dir
touch $proj
echo "目录 $dir 和 文件 $proj 创建成功"
echo "输出到屏幕和文件:"
sleep 2s
cat $proj
cat PE.txt > $proj
mv -n $proj $dir
sleep 1s
ls
esac
四、执行代码
1.执行代码指令
在vscode也是一样的
打开终端:
bash gjy_jb.sh
运行结果:
2.通过任务计划执行脚本
代码将结果提前存入PE.txt文件了
echo "开始体检:"
echo "主机基本情况 " > PE.txt
uname -a >> PE.txt
echo "输出目录基本情况:" >> PE.txt
ls -alF >> PE.txt
echo "用户基本情况:" >> PE.txt
sudo cat /etc/passwd >> PE.txt
echo "组基本情况:" >> PE.txt
sudo cat /etc/group >> PE.txt
echo "硬盘基本情况:" >> PE.txt
sudo fdisk -l >> PE.txt
echo "进程基本情况:" >> PE.txt
ps -A >>PE.txt
echo "网络基本情况:" >> PE.txt
ifconfig >> PE.txt
1)为了crontab能够顺利执行,gjy_jb.sh对其权限进行修改:
chomd +x gjy_jb.sh
2)执行crontab指令
sudo crontab -e
在这里设置一个定期执行的时间
从左到右依次为
分钟 小时 天 月 星期 绝对文件路径
上图
代表每天、月、星期的19:43 bash运行 文件/home/yang/linuxshiyan/dzy/gjy_jb.sh
4)文件已自动生成:
时间一到文件自动生成
ll #查看