系统状态检测脚本练习

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. Zju1610 Count the Colors

    题面: 画一些颜色段在一行上,一些较早的颜色就会被后来的颜色覆盖了. 你的任务就是要数出你随后能看到的不同颜色的段的数目. Input: 每组测试数据第一行只有一个整数n, 1 <= n < ...

  2. 【省选水题集Day1】一起来AK水题吧! 题目(更新到B)

    题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.or ...

  3. 我的shell脚本

    问题:在ip.lt文件中有600个IP,有3个文档模版,三个文档的名称结构都是“ip+一系列字符串”,要求:1.将600个IP分成3分,以三个模版为基础创建600个文档,名字结构与模版相同:2修改60 ...

  4. logstash5生成init脚本后台启动

    默认情况使用rpm包安装完logstash之后没有启动脚本,这一点我觉得算是开发不够彻底.官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑, ...

  5. Kotlin入门简介

    Kotlin的“简历” 来自于著名的IDE IntelliJ IDEA(Android Studio基于此开发) 软件开发公司 JetBrains(位于东欧捷克) 起源来自JetBrains的圣彼得堡 ...

  6. Codeforces Round #532

    以后不放水题了 C.NN and the Optical Illusion 复习一下高中数学即可 $\frac{ans}{ans+r}=\sin \frac{\pi}{n}$ 解方程 #include ...

  7. [THUSC 2016] 补退选 (Trie树)

    link $solution:$ $Trie$树很显然吧,那么如何去处理每次询问.对于$Trie$树的每个节点放一个$vector$表示其若有$v$个人的最小时间. #include<iostr ...

  8. winscp以命令行方式同步服务器数据到PC机磁盘上

    目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...

  9. linux命令总结之date命令

    命令简介: date 根据给定格式显示日期或设置系统日期时间.print or set the system date and time 指令所在路径:/bin/date 命令语法: date [OP ...

  10. JavaScript中数组迭代方法

    文章来源 : https://www.cnblogs.com/shuiyi/p/5058524.html