Shell 07 项目案例
2024-08-30 18:46:23
案例1:编写一键部署软件脚本
案例2:启动脚本
案例3:编写监控脚本
案例4:编写安全检测脚本
案例5:编写进度显示脚本
一.编写一键部署软件脚本
#!/bin/bash
N=$(yum repolist | awk '/repolist/{print $2}' | sed 's/,//')
if [$N -le 0];then
echo "yum不可用"
exit
fi
yum -y install gcc openssl-devel pcre-devel
tar -xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure
make
make install
/usr/local/nginx/sbin/nginx -V
二.编写监控脚本
#!/bin/bash
case $1 in
start)
usr/local/nginx/sbin/nginx;;
stop)
usr/local/nginx/sbin/nginx -s stop;;
restart)
usr/local/nginx/sbin/nginx -s
usr/local/nginx/sbin/nginx;;
status)
netstat -ntulp | grep -q nginx
if [ $? -eq 0 ];then
echo "服务已启动"
else
echo "服务未启动"
fi;;
*)
echo "ERROR";;
esac
三.编写监控脚本
本案例要求编写脚本,实现计算机各个性能数据监控的功能,具体监控项目要求如下:
CPU负载
网卡流量
内存剩余容量
磁盘剩余容量
计算机账户数量
当前登录账户数量
计算机当前开启的进程数量
本机已安装的软件包数量
#!/bin/bash
ip=`ifconfig enp2s0 | awk '/inet /{print $2}'`
echo "本地IP地址是:"$ip
cpu=`uptime | awk '{print $NF}'`
echo "本机CPU最近15分钟的负载是:$cpu"
net_in=`ifconfig enp2s0 | awk '/RX p/{print $5}'`
echo "入站流量为:"$net_in
net_out=`ifconfig enp2s0 | awk '/TX p/{print $5}'`
echo "出站流量为:"$net_out
mem=`free | awk '/Mem/{print $4}'`
echo "内存剩余容量为:"$mem
disk=`df -h | awk '/\/$/{print $4}'`
echo "根分区剩余容量为:"$disk
user=`cat /etc/passwd | sed -n '$='`
echo "本地用户数量为:"$user
login=`who | wc -l`
echo "当前可登陆的用户数量为:"$login
process=`ps aux | wc -l`
echo "当前计算机启动的进程数量为:"$process
soft=`rpm -qa | wc -l`
echo "当前计算机已安装的软件数量为:"$soft
四.编写安全检测脚本
本案例要求编写脚本,防止远程ssh暴力破解密码,具体监控项目要求如下:
检测ssh登录日志,如果远程登陆账号名错误3次,则屏蔽远程主机的IP
检测ssh登录日志,如果远程登陆密码错误3次,则屏蔽远程主机的IP
#!/bin/bash
awk '/Faile/{print "登陆失败的有:" $11}' /var/log/secure
awk '/Acc/{print "登陆成功的有:" $11}' /var/log/secure
五.编写进度条
#!/bin/bash
jindu(){
while :
do
echo -ne '\033[43m \033[0m'
sleep 0.3
done
}
jindu &
cp -r $1 $2
kill $!
最新文章
- 嵌入式linux开发环境构建
- OS初识
- iOS - Mac OS X 终端命令
- PHP学习之一晚撸下W3chscool
- 【MongoDB】mongoimport and mongoexport of data (一)
- 【Java基础】Java内部类
- Js 直接下载保存文件
- navicat如何导入sql文件
- JNDI中 java:comp/env 的理解
- python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
- Linux背背背(5)
- LR运行负载测试场景-笔记
- spring gateway 截取response 长度缺失
- html 速查表
- [SQL ERROR 800]Corresponding types must be compatible in CASE expression.
- 每日英语:The Most Destructive, Unpredictable Force in Tech
- python3 清除过滤emoji表情
- Sprint2
- 初识JVM
- [BZOJ4311]向量(凸包+三分+线段树分治)