shell企业案例

shell企业案例

企业中常用的监控命令

监控目标 命令
本地端口监控 netstat -lntup
ss -lntup
lsof
远端端口监控 telnet
nc
nmap
进程监控 ps -ef
ps -aux
web监控 curl
wget
数据库 mysql -uroot -p123 -e 'select ping()'
内存 free -m
磁盘 df -h
文件内容 md5

端口检查

本地端口检测

# netstat

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

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

# lsof

[root@m01 ~]# lsof -i:22
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     9361 root    3u  IPv4  46160      0t0  TCP *:ssh (LISTEN)
sshd     9361 root    4u  IPv6  46169      0t0  TCP *:ssh (LISTEN)
sshd    22450 root    3u  IPv4 234248      0t0  TCP m01:ssh->10.0.0.1:56860 (ESTABLISHED)
sshd    22865 root    3u  IPv4 238269      0t0  TCP m01:ssh->10.0.0.1:57120 (ESTABLISHED)
sshd    23041 root    3u  IPv4 238759      0t0  TCP m01:ssh->10.0.0.1:57144 (ESTABLISHED)
sshd    28024 root    3u  IPv4 284447      0t0  TCP m01:ssh->10.0.0.1:63202 (ESTABLISHED)

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

# telnet

IP=$1
port=`echo ''|telnet 10.0.0.7 80 2>/dev/null |grep 'Connected'|wc -l`
if [ $port -eq 0 ];then
        echo "端口不存活"
else
        echo "端口存活"
fi

# 使用telnet端口扫描
IP=$1
for port in `seq 65535` ;do
                port2=`echo ''|telnet 10.0.0.7 $port 2>/dev/null |grep 'Connected'|wc -l`
                if [ $port2 -ne 0 ];then
                        echo "$port 端口存活"
                fi
done


# nc 网络中的瑞士军刀
[root@m01 ~]# echo ''|nc 10.0.0.7 80

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

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

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

# 单个ip的范围端口扫描
[root@m01 ~]# nmap -p 1-100 10.0.0.7 

# 多个IP的范围扫描
[root@m01 ~]# nmap -p 1-100 10.0.0.7 10.0.0.8

进程判断

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

# 远端进程检测
[root@m01 ~]# ssh 10.0.0.7 'ps -ef |grep [n]ginx|wc -l'

proc=`ssh 10.0.0.7 'ps -ef |grep [n]ginx|wc -l'`
if [ $proc -eq 0 ];then
        echo 'nginx不存活'
else
        echo 'nginx存活'
fi

网站检索

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

[root@m01 ~]#  curl -s -w "%{http_code}" -o /dev/null baidu.com

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

文件检测

[root@m01 ~]# md5sum 1.txt > /tmp/md5_1.txt
[root@m01 ~]# md5sum -c /tmp/md5_1.txt 
1.txt: OK
[root@m01 ~]# echo 1111 > 1.txt 
[root@m01 ~]# md5sum -c /tmp/md5_1.txt 
1.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match

作业

监控系统内存,如果不足30%就发送邮件告警通知运维人员

a=`free -m|awk 'NR==2{print $4/$2*100}'`
b=${a}%
if [ $b = 30% ];then
	echo '空闲内存剩余30%' | mail -s '内存不足' 2646491240@qq.com
fi

检测nginx和业务是否正常

# 检测nginx是否正常
 . /etc/init.d/functions 
nginx_k=`netstat -lntup | grep [n]ginx|wc -l`
if [ $nginx_k -eq 0 ];then
	action '找不到nginx端口' /bin/false
else
	action '端口正常' /bin/true
fi
nginx_ps=`ps -ef | grep [n]ginx|wc -l`
if [ $nginx_ps -eq 0 ];then
	action '找不到nginx进程'  /bin/false
else
	action '进程正常' /bin/true
fi
nginx_web=`curl -s -w "%{http_code}" -o /dev/null 10.0.0.61`
if [[ $nginx_web =~ ^[2-3] ]];then
	action '业务正常'  /bin/true
elif [ $nginx_web -eq 401 ];then
	action '用户认证失败'  /bin/false
else
	action '业务异常'  /bin/false
fi
posted @   FYytfg  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示