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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具