系统状态检测脚本练习

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系统检测->的更多相关文章

  1. Wsyscheck(系统检测维护工具) v1.68.33绿色版

    软件名称:系统检测维护工具(Wsyscheck) v1.68.33绿色版软件类别:国产软件运行环境:windows软件语言:简体中文授权方式:免费版软件大小:1022 KB软件等级:整理时间:2011 ...

  2. 多线程shell脚本检测主机存活

    局域网中分了很多网段,而IP地址使用情况也未知,前期也没有规划和记录,当新的主机需要使用固定IP的时候,能否第一时间知道哪个IP空闲就显得很重要了,如果一个一个去ping的话太浪费时间. 这里分享一个 ...

  3. Linux中系统检测工具top命令

    Linux中系统检测工具top命令 本文转自:https://www.cnblogs.com/zhoug2020/p/6336453.html 首先介绍top中一些字段的含义: VIRT:virtua ...

  4. Linux如何使用shell命令检测PHP木马防止脚本木马的破坏

    1.一句话查找PHP木马 代码如下 # find / -name "*.php" |xargs egrep "phpspy|c99sh|milw0rm|eval\(gun ...

  5. 使用adb shell dumpsys检测Android的Activity任务栈

    谈起Android程序开发,就需要了解其四个主要的部件:Activity.Service.ContentProvider. BroadcastReceiver.而其中Activity是唯一直接控制程序 ...

  6. Shell编程检测监控mysql的CPU占用率

    shell编程很强大! 网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务.由于这种事具有不 ...

  7. shell脚本检测监控mysql的CPU占用率

    网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法 就是重启mysql服务.由于这种事具有不可预见性,我们不知道什 ...

  8. shell脚本检测网络是否畅通

    shell初始化安装脚本执行时,需从网络上安装一些rpm包,所有需要先检测网络的畅通性, 代码 #检测网络链接&&ftp上传数据 function networkAndFtp() { ...

  9. 一、man、系统工作、系统检测命令

    目录 一.man命令 (一)常用按键 (二)结构意义 二.常用系统工作命令 (一) echo (二)date (三)reboot (四)powoff (五)wget (六)ps (七)top (八)p ...

随机推荐

  1. 【刷题】BZOJ 2154 Crash的数字表格

    Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...

  2. CentOS7搭建elasticsearch集群

    准备三个节点,系统版本为CentOS7.3. 11.0.10.18 es01 11.0.10.19 es02 11.0.10.20 es03 1.安装java环境 # yum install -y j ...

  3. JS的语法

    1.语句和表达式 var a = 3 * 6; var b = a; b; 这里,3 * 6是一个表达式(结果为18).第二行的a也是一个表达式,第三行的b也是.表达式a和b的结果值都是18. var ...

  4. Eclipse Oxygen(4.7.0)安装插件Eclipse Class Decompiler反编译JAR文件

    引用自官方内容 Eclipse Class Decompiler是一款Eclipse插件,整合了多种反编译器,和Eclipse Class Viewer无缝集成,能够很方便的使用插件查看类库源码,进行 ...

  5. 利用Array Prototype的方法来实现对dom集合的筛选、indexOf、map等功能

    <!DOCTYPE html><html> <head> <title>TODO supply a title</title> <me ...

  6. 【bzoj4231】回忆树

    题解: 树上的串匹配,模式串的总长$|S|$,令$\overline {S} $为$S$的反串: 对$S$和$\overline {S} $分别建自动机 $u -> v$可以分成三个部分去统计 ...

  7. 【bzoj4084】【sdoi2015】双旋转字符串

    题解 首先题中说了$n>=m$; 分成的循环串左右两边为本质相同的单循环串循环串,分别长为$l = \frac{n + m}{2} $; 所以$S$串的前$l$位为双循环串的一半$S1$,后一半 ...

  8. (转)Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web mod

    背景:在sts中导入web项目,却不能通过sts中的tomcat来加载该服务,并报出如下错误. “Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4 ...

  9. struts的namespace理解

    转载: namespace决定了action的访问路径,默认为"",可以接受所有路径的action namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的acti ...

  10. 利用ansible来做tomcat应用的持续交付

    https://www.jianshu.com/p/fca8f91ae223 在做持续交付这件事,想必大家都是用jenkins这款程序来做基石.当然,我们这次也是用jenkins作为承载工具,jenk ...