📅  最后修改于: 2023-12-03 15:10:55.544000             🧑  作者: Mango
在 Linux 上,可以通过检查端口来确定哪些服务正在运行。这是非常有用的,因为这可以帮助我们诊断网络问题,防止不必要的端口暴露和安全漏洞。
以下是一个 Bash 脚本,可以用于检查 Linux 上运行的服务:
#!/bin/bash
# 使用 netstat 命令检查端口上运行的服务
# 设置需要检查的端口
port=80
# 使用 netstat 命令获取所有的监听端口
listening_ports=$(netstat -tln | awk '{print $4}' | grep -E ".*:$port$" | wc -l)
# 如果端口正在监听,则输出端口和对应的服务名
if [ $listening_ports -gt 0 ]; then
service=$(lsof -i :$port | awk '{print $1}' | tail -n +2 | uniq)
echo "**服务名:** $service"
echo "**端口号:** $port"
else
echo "端口 $port 没有任何服务在运行"
fi
该脚本首先由用户定义需要检查的端口,然后使用 netstat -tln
命令获取所有正在监听的端口。接下来,我们使用 awk
和 grep
命令过滤出我们需要的端口,然后再用 wc -l
计算它们的数量。
如果端口正在运行,则使用 lsof
命令获取对应的服务名,并输出它们。如果端口没有运行,则输出一个消息说明该端口没有运行任何服务。
Markdown 格式的结果如下:
服务名: nginx
端口号: 80
或者
端口 8080 没有任何服务在运行
这个脚本可以轻松地扩展来检查多个端口。同时,它还可以和其他工具一起使用,比如 Nagios 或 Zabbix,以帮助监控远程服务器的网络运行状况。