企业实战

shell企业案例实战

企业中常用的监控命令

端口检查

本地端口检查

# netstat
[root@m01 ~]# netstat -lntup | grep [s]shd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8885/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      8885/sshd   

[root@m01 ~]# netstat -lntup | grep -w '22'

# 脚本式

[root@m01 ~]# vim test1.sh 

#!/bin/bash

# File Name: __test1.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-21 11:08__

ip=$1
port=22

port1=`netstat -lntup | grep -w '22'|wc -l`
if [ ${port1} -ne 0 ];then
        echo "$port 端口" 
fi

[root@m01 ~]# sh test1.sh 
22 端口

# ss
[root@m01 ~]# ss -lntup | grep -w '22'
udp    UNCONN     0      0      172.16.1.61:123                   *:*                   users:(("ntpd",pid=7274,fd=22))
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=8885,fd=3))
tcp    LISTEN     0      128      :::22                   :::*                   users:(("sshd",pid=8885,fd=4))

# lsof(需要下载)
[root@m01 ~]# lsof -i:22
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     8885 root    3u  IPv4  53299      0t0  TCP *:ssh (LISTEN)
sshd     8885 root    4u  IPv6  53309      0t0  TCP *:ssh (LISTEN)
sshd    10228 root    3u  IPv4  57420      0t0  TCP m01:ssh->10.0.0.1:54674 (ESTABLISHED)
sshd    10758 root    3u  IPv4  60707      0t0  TCP m01:ssh->10.0.0.1:55082 (ESTABLISHED)

# nc网络中的瑞士军刀
[root@m01 ~]# echo ''|nc 172.16.1.7 22
SSH-2.0-OpenSSH_7.4
Protocol mismatch.
[root@m01 ~]# echo $?
0

# 选项
-l:开启一个指定的端口
-k:保持端口持续连接
-u:指定nc使用udp协议
-s:指定发送数据的源IP地址,适用于多网卡机器
-w:设置超时时间
-z:扫描时不发送任何数据

# nmap
# 单个IP扫描
[root@m01 ~]# nmap 172.16.1.7

# 单个IP的单个端口扫描
[root@m01 ~]# nmap -p 22 172.16.1.7

# 单个IP的范围端口扫描
[root@m01 ~]# nmap -p 1-212 172.16.1.7

# 多个IP的范围端口扫描
[root@m01 ~]# nmap -p 1-212 172.16.1.7 172.16.1.8

使用脚本判断远程端口是否存活

# telnet
[root@m01 ~]# telnet 172.16.1.7 22
Trying 172.16.1.7...
Connected to 172.16.1.7.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

# 脚本
[root@m01 ~]# vim test1.sh 

#!/bin/bash

# File Name: __test1.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-21 11:08__

. /etc/init.d/functions

ip=$1

for port in `seq 100`;do
        {
        port1=`echo '123'|telnet $ip ${port} 2>/dev/null |grep Connected|wc -l`

        if [ ${port1} -ne 0 ];then
                action "${port} 端口存在" /bin/true
        fi
        } &
done

[root@m01 ~]# sh test1.sh 172.16.1.7
22 端口存在                                  			  [  OK  ]
80 端口存在                                                [  OK  ]

进程判断

[root@m01 ~]# ps -ef |grep [n]ginx

# 远程进程检测
[root@m01 ~]# ssh 172.16.1.7 ps -ef |grep [n]ginx

# 脚本
[root@m01 ~]# vim test1.sh 

#!/bin/bash

# File Name: __test1.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-21 11:08__

ip=172.16.1.7
port=`ssh ${ip} ps -ef |grep [n]ginx|wc -l`

if [ $port -eq 0 ];then
        echo 'nginx 不存在'
else
        echo 'nginx 存在'

fi

网站检查

# curl
# 选项
- I :获取主机响应头部信息
- s :取消默认输出
- o :保存下载页面内容
- w :获取状态码
- u :身份认证 -u 用户名:密码
- H:添加请求头部信息
- v:显示详细信息
- L:跟随跳转
- x:指定请求方式
- A:修改用户的客户端

# 检测网站状态
[root@m01 ~]# curl -uzls:zls -s -w "%{http_code}" -o /dev/null blog.wc.com

[root@m01 ~]# curl -s -w "%{http_code}" -o/dev/null http://用户名:密码@www.wc.com

[root@m01 ~]# curl -v http://www.360buy.com -L

# 脚本
[root@m01 ~]# vim test1.sh 

#!/bin/bash

# File Name: __test1.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-21 11:08__


web=`curl -uzls:zls -s -w "%{http_code}" -o /dev/null $1`

if [[ ${web} =~ [2-3] ]];then
        echo '业务正常'
elif [[ ${web} =~ 401 ]];then
        echo '输入密码'
else
        echo '网站无法访问'
fi


# wget
# 选项
-O:保存下载页面
-r:递归下载
--debug:显示访问详细过程  类似 curl -v
-q :静默输出
--sqider:只查看不下载

文件检测

[root@m01 ~]# vim 1.txt
[root@m01 ~]# md5sum 1.txt 
e6ace1b95f3ef8da537f03c4934e7abb  1.txt
[root@m01 ~]# md5sum 1.txt > /opt/md5.txt
[root@m01 ~]# md5sum -c  /opt/md5.txt
1.txt: OK
[root@m01 ~]# echo 111 1.txt 
111 1.txt
[root@m01 ~]# echo '111'> 1.txt 
[root@m01 ~]# md5sum -c  /opt/md5.txt
1.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

作业

1.1.监控系统内存,如果不足30%就发送邮件告警通知运维人员
[root@m01 ~]# vim fm.sh

#!/bin/bash

# File Name: __fm.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-22 17:17__

for i in 7 8;do
men=`ssh 172.16.1.$i free -m|awk 'NR==2{print ($4+$6)/$2}'`
men1=`echo $men |awk '{printf ("%.0f",$1*10000)}'`

if [[ $men1 -lt 3000 ]];then
        mail -s '内存小于30%' 2794552827@qq.com >/dev/null
fi
done

[root@m01 ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
01 03 * * * /usr/sbin/sh /root/fm.sh &>/dev/null


2.检查nginx是否正常,业务是否正常
[root@m01 ~]# vim test1.sh 

#!/bin/bash

# File Name: __test1.sh__
# Version: __v1.1__ 
# Author: __WC__ 
# Mail: __2794552827@qq.com__ 
# Blog: __https://blog.driverzeng.com__ 
# DateTime: __2022-07-21 11:08__

ip=172.16.1.7
web=`curl -uzls:zls -s -w "%{http_code}" -o /dev/null $1`

port=`ssh ${ip} ps -ef |grep [n]ginx|wc -l`

if [ $port -eq 0 ];then
        echo 'nginx 不存在'
else
        echo 'nginx 存在'

fi

if [[ ${web} =~ [2-3] ]];then
        echo '业务正常'
elif [[ ${web} =~ 401 ]];then
        echo '输入密码'
else
        echo '网站无法访问'
fi

posted @ 2022-07-22 18:06  Gabydawei  阅读(24)  评论(0编辑  收藏  举报