系统状态检测脚本练习

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 2738 子矩阵第k大 | 二维树状数组 整体二分 分治

    BZOJ 2738 "矩阵乘法"(子矩阵第k大) 题意 给出一个矩阵,多次询问子矩阵中第k大的数是多少. 题解 我做这道题之前先照着这道题出了一道题,是这道题的一维版本,在这里:h ...

  2. 《Linux内核分析》期末总结及学习心得

    [洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 一.学习心得 本学 ...

  3. IO编程(2)-操作文件和目录

    操作文件和目录 如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只 ...

  4. 编译安装haproxy开启支持SSL

    1.下载程序包 # wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz # tar xvf haproxy-1.7.5. ...

  5. 解题:NOI 2014 动物园

    题面 其实好像并不难,因为猫老师(应该是猫老师吧,还是LX大佬?)有一句话让我印象深刻:“包的(border)的包的还是包的”=.= 统计个数不就是统计长度么,然后根据上面那句话,当$nxt$长度大于 ...

  6. CF17E Palisection——优秀的综合计数题

    题意翻译 给定一个长度为n的小写字母串.问你有多少对相交的回文子 串(包含也算相交) . 输入格式 第一行是字符串长度n(1<=n<=2*10^6),第二行字符串 输出格式 相交的回文子串 ...

  7. (转)maven镜像详解

    背景:一直以来,对maven镜像不是特别的了解,这里通过对网上资料的收集,做个详细的记录. 镜像介绍 如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像.换句话说,任何一个可以从仓 ...

  8. D65光源

    D65光源是标准光源中最常用的人工日光,其色温为6500K.英文名:Artificial Daylight 6500K.标准光源箱中的D65光源是模拟人工日光,保证在室内.阴雨天观测物品的颜色效果时, ...

  9. bcdiv bcmul

    /** * 分 转为 钱 */public static function cent2yuan($price) { return bcdiv($price,100,2);} /** * 元 转为 分 ...

  10. Python【网络编程】内置模块urllib

    from urllib import request,parseurl = 'http://www.nnzhp.cn'req = request.urlopen(url) #打开一个url,发get请 ...