shell系统检测->
系统状态检测脚本练习
1-> 查看磁盘状态
思路:
查看磁盘/当前使用状态,如果使用率超过80%则报警发邮件
1.获取磁盘当前使用的值 df -h|grep /$
2.从获取到的值中提取出,对应的使用率 df -h|grep /$|awk -F "[ %]+" '{print $(NF-1)}'
3.进行数字比较(如果提取出来的值大于80则报警,如果提取出来的值小于80则不处理)
脚本:
#!/usr/bin/bash
Disk=$(df -h|grep /$|awk -F "[ %]+" '{print $(NF-1)}') if [ $Disk -gt 80 ];then
echo "磁盘使用率超标, 当前使用率是: ${Disk}%"
else
echo "磁盘啥事没有!!当前使用率是: ${Disk}%"
fi
2-> 查看内存使用情况
思路:
查看内存/当前使用状态,如果使用率超过80%则报警发邮件
1.如何查看内存的总大小 free -m|awk '/^Mem/{print $2}'
2.如何查看内存的使用率 free -m|awk '/^Mem/{print $3}'
2.使用使用率*100 除以 内存的总大小 = 使用的百分比
3.拿到对应的百分比进行比对。
脚本:
[root@web03 day01]# cat free_use.sh
#!/usr/bin/bash
Free_use=$(free -m|awk '/^Mem/{print int($3/$2*100)}')
if [ $Free_use -gt ];then
echo "内存使用率超标了, 当前内存的使用率是: ${Free_use}%"
else
echo "内存使用率正常, 当前内存的使用率是: ${Free_use}%"
fi ->内存报警(低于30%)
[root@bgx]# cat mem.sh
Mem_Total=$(free -m|grep "^M"|awk '{print $2}')
Mem_Use=$(free -m|grep "^M"|awk '{print $3}')
Mem_B=$((($Mem_Use*)/$Mem_Total)) if [ $Mem_B -ge ];then
echo "Memory Is Err ${Mem_B}%"
else
echo "Memory Is OK ${Mem_B}%"
fi
3 -> 系统信息,cpu负载,内存
[root@jumpserver- scripts]# cat system.sh
#!/bin/bash
#系统信息
system_version=$(hostnamectl | awk -F ':' '/Operating System/{print $2}')
system_kernel=$(hostnamectl | awk -F ':' '/Kernel/{print $2}')
system_network=$(hostname -I)
system_host=$(hostnamectl |awk -F ':' '/Static hostname/{print $2}')
network_out=$(curl -s icanhazip.com) #cpu负载
cpu_load=$(w|awk -F ':' 'NR==1{print $NF}') #内存
mem_total=$(free -h | awk '/^Mem/{print $2}')
mem_use=$(free -h | awk '/^Mem/{print $3}')
mem_B=$(free -m | awk '/^Mem/{print int($3*100/$2)}')
echo "-------------------------------system info-----------------------------------------"
echo "当前系统的版本:$system_version
当前系统的内核:$system_kernel
当前系统的虚拟化平台:
当前系统的主机名:$system_network
当前系统的内网ip:$system_host
当前系统的外网ip:$network_out
"
echo "-------------------------------system cpu-----------------------------------------" echo "当前cpu负载情况 : 1分钟,5分钟,15分钟使用:$cpu_load" echo "-------------------------------system mem---------------------------------------" echo "当前总内存大小:$mem_total
当前内存使用率:$mem_use
当前内存使用百分比:$mem_B%
"
echo "-------------------------------system disk---------------------------------------"
for ((i=;i<=;i++))
do
df -h |awk 'NR=='$i'{print "磁盘分区:"$NF,"使用了"$(NF-1)}'
done
echo "--------------------------------------------------------------------------------------"
4->查看ip是否畅通
[root@jumpserver- scripts]# cat ping.sh
#!/bin/bash read -p "input ip: " ip
ping -c2 $ip &>/dev/null if [ $? -eq ];then
echo "host $ip is ok"
else
echo "host $ip is error"
fi
->测试ip畅通(并行)
[root@web03 day01]# cat for.sh
#! IP=10.0. for i in {..}
do
Addr="$IP"."$i"
{
ping -c1 "$Addr" &>/dev/null
if [ $? -eq ];then
echo "$Addr" OK!
fi
}&
done
wait
echo "所有的ping都结束了....."
5-> 系统管理工具脚本
[root@jumpserver- scripts]# cat action.sh
#!/usr/bin/bash cat <<EOF
===================
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
===================
EOF while true;
do
read -p "请输入你想查看系统状态对应码[h/f/d/m/u/q]: " sys
case "$sys" in
h)
clear
help
;;
f)
clear
lsblk
;;
d)
clear
df -h
;;
m)
clear
free -m
;;
u)
clear
uptime
;;
q)
break
;;
*)
read -p "请输入你想查看系统状态对应码[h/f/d/m/u/q]: " sys
esac
done
6-> 跳板机实现脚本
[root@jumpserver- scripts]# cat jumpserver.sh
#!/bin/bash echo "正在启动。。。"
yum install -y sshpass &>/dev/null cat <<EOF
==================
web01=10.0.0.7-->
web02=10.0.0.8-->
web03=10.0.0.9-->
==================
EOF while true;
do
read -p "请选择登录的主机编号:" host case $host in
)
sshpass -p123456 ssh root@10.0.0.7
;;
)
sshpass -p123456 ssh root@10.0.0.8
;;
)
sshpass -p123456 ssh root@10.0.0.9
;;
exec)
exit
;;
*)
echo "请检查主机编号是否正确"
;;
esac
done
7-> 创建文件加随机字母并修改
[root@jumpserver- scripts]# cat make_file.sh
#!/bin/bash for i in {..}
do
file=$(uuidgen | sed -r 's#[0-9-]+##g'|cut -c -)
[ -f test_$file.html ]
if [ $? -eq ];then
echo "这个文件已经存在。。"
else
touch /opt/test_${file}.html &>/dev/null
echo test_${file}.html >>/opt/test1.txt
echo "你已经创建了 test_$file.html 文件"
fi
done echo "------------正在执行操作------------" for n in {..}
do
name=$(sed -rn ${n}p /opt/test1.txt | sed -r 's#.*_(.*).html#\1#g')
name_new=test_done_${name}.HTML
mv /opt/test_${name}.html /opt/$name_new
echo "文件 $name_new 修改成功"
done > /opt/test1.txt ->第二种方法
[root@web03 ~]# cat for_file2.sh
#!/bin/bash #.循环创建10个随机文件名的html文件
for i in {..}
do
File_Name=$(openssl rand -base64 |sed 's#[^a-z]##g'|cut -c1-)
touch test_${File_Name}.html
done #.查找当前目录下.html结尾的文件,写入一个文件中
find ./ -type f -name "*.html" > .txt
for i in $(cat .txt)
do
#.将带html修改为HTML ${i/html/HTML} 将文件名后缀是html替换为HTML
mv $i ${i/html/HTML}
done
8-> 判断脚本语法错误
[root@jumpserver- day01]# cat syntax.sh
#!/bin/bash read -p "请输入脚本的名字:" name if [ -f $name ];then bash -n $name #如果不想看到语法错误 &>/dev/null if [ $? -ne ];then
read -p "你的脚本存在语法错误
->退出(q|Q)
->继续编辑按任意键:" command
case $command in
q|Q)
exit
;;
*)
vim $name
esac
else
echo "你的脚本没有语法错误。。。"
fi else
echo "检查脚本是否存在。。。"
fi
9-> 查看ip地址-端口
写一个shell脚本批量查看10.0.0.0/24网段的所有IP地址,判断哪些IP开放了80端口。
[root@Shell timujia]# cat ping.sh
#!/bin/bash
ip=10.0..
for i in {..}
do
addr=${ip}${i}
#.循环的ping整个网段的主机
ping -c1 $addr &>/dev/null #.判断是否能ping通
if [ $? -eq ];then
Nmap=$(nmap -p $addr|grep open|wc -l) #.如果能ping通则检测端口是否存在
if [ $Nmap -eq ];then
echo "$addr ON 80 Port"
fi
fi
done
->监控80端口是否开启
[root@web03 ~]# cat status.sh
#!/usr/bin/bash
while true
do
#.检查Nginx是否存或,让wc统计行数,方便整数比对
Nginx_status=$(netstat -lntp|awk '{print $4}'|grep :$|wc -l) #.检查Nginx的值是1还是0,如果是0则代表没启动Nginx,如果是1则不做处理
if [ $Nginx_status -eq ];then
echo "正在尝试重启..."
systemctl restart nginx &>/dev/null
if [ $? -eq ];then
echo "重启成功..."
else
echo "重启失败"
fi
fi
#.判断结束后,休息5s
sleep
done
10-> 查找文件->打包->还原
[root@web03 ~]# cat file.sh #.修改名称
find /backup/ -type f -name "*.txt" > /tmp/.txt for i in $(cat /tmp/.txt)
do
mv $i ${i}.bak
done #.重新查找,bak文件,然后进行打包
cd /backup && tar czf .tar.gz $(find /backup/ -type f -name "*.bak") #.将.bak还原.txt
find /backup/ -type f -name "*.bak" >/tmp/.txt for i in $(cat /tmp/.txt)
do
mv $i ${i%.*}
done
shell系统检测->的更多相关文章
- Wsyscheck(系统检测维护工具) v1.68.33绿色版
软件名称:系统检测维护工具(Wsyscheck) v1.68.33绿色版软件类别:国产软件运行环境:windows软件语言:简体中文授权方式:免费版软件大小:1022 KB软件等级:整理时间:2011 ...
- 多线程shell脚本检测主机存活
局域网中分了很多网段,而IP地址使用情况也未知,前期也没有规划和记录,当新的主机需要使用固定IP的时候,能否第一时间知道哪个IP空闲就显得很重要了,如果一个一个去ping的话太浪费时间. 这里分享一个 ...
- Linux中系统检测工具top命令
Linux中系统检测工具top命令 本文转自:https://www.cnblogs.com/zhoug2020/p/6336453.html 首先介绍top中一些字段的含义: VIRT:virtua ...
- Linux如何使用shell命令检测PHP木马防止脚本木马的破坏
1.一句话查找PHP木马 代码如下 # find / -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gun ...
- 使用adb shell dumpsys检测Android的Activity任务栈
谈起Android程序开发,就需要了解其四个主要的部件:Activity.Service.ContentProvider. BroadcastReceiver.而其中Activity是唯一直接控制程序 ...
- Shell编程检测监控mysql的CPU占用率
shell编程很强大! 网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不 ...
- shell脚本检测监控mysql的CPU占用率
网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法 就是重启mysql服务.由于这种事具有不可预见性,我们不知道什 ...
- shell脚本检测网络是否畅通
shell初始化安装脚本执行时,需从网络上安装一些rpm包,所有需要先检测网络的畅通性, 代码 #检测网络链接&&ftp上传数据 function networkAndFtp() { ...
- 一、man、系统工作、系统检测命令
目录 一.man命令 (一)常用按键 (二)结构意义 二.常用系统工作命令 (一) echo (二)date (三)reboot (四)powoff (五)wget (六)ps (七)top (八)p ...
随机推荐
- 【NOI】荷马史诗
追逐影子的人,自己就是影子 ——荷马 Allison最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛>和< ...
- 【poj1390】 Blocks
http://poj.org/problem?id=1390 (题目链接) 题意 给出一排方块,每次可以把颜色相同的消掉,获得长度的平方的分数,问最大得分. Solution 蜜汁dp.. 我们把颜色 ...
- 解题:CQOI 2015 选数
题面 神仙题,不需要反演 首先上下界同时除以$k$,转换成取$n$个$gcd$为$1$的数的方案数,其中上界向下取整,下界向上取整 然后设$f[i]$表示选$n$个互不相同的数$gcd$为$i$的方案 ...
- 解题:BZOJ 2818 GCD
题面 转化一下题目,即是求$1$到$n$中对于某个素数$pri$使得$gcd(x*pri,y*pri)=pri$的$(x,y)$的数目 这样一来就可以考虑每个质数$pri$对答案的贡献,即为$1$到$ ...
- c语言条件编译和预编译
转自http://www.cnblogs.com/rusty/archive/2011/03/27/1996806.html 一.C语言由源代码生成的各阶段如下: C源程序->编译预处理-> ...
- Linux最大文件句柄(文件描述符)限制和修改
转自:http://jameswxx.iteye.com/blog/2096461 写这个文章是为了以正视听,网上的文章人云亦云到简直令人发指.到底最大文件数被什么限制了?too many open ...
- ajax的坑
$('#mkcode').on('click',function(){ $.ajax({ type : 'POST', url : '__URL__/mkcode', data : {}, dataT ...
- Ansible9:条件语句
目录 一.when 1.基本用法 2.在when中使用jinja2的语法 3.使用bool值作为when的判断条件 4.在when中使用defined关键字 5.when在循环语句中的使用方法 6.在 ...
- linux(ubuntu) 常用指令
1.新建文件夹 mkdir mkdir test 2.进入文件夹 cd cd test 3.创建/修改文件 vim vim a.txt 如果不存在a.txt,就会新增a.txt; 如果存在,则修改 先 ...
- P3097 [USACO13DEC]最优挤奶Optimal Milking
P3097 [USACO13DEC]最优挤奶Optimal Milking 题意简述:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 感谢@zht4 ...