您可以使用以下命令查看shell脚本: ,,“bash,cat /path/to/your/script.sh,
“
使用 Shell 脚本查看多个服务器的端口是否打开
在运维工作中,我们经常需要检查服务器的端口是否开放,我们需要检查多个服务器的端口,这时候就需要编写一个 Shell 脚本来实现这个功能,本文将介绍如何使用 Shell 脚本来查看多个服务器的端口是否打开。
1. 准备工作
我们需要获取所有需要检查的服务器的 IP 地址或者主机名,这些信息可以存储在一个文本文件中,每行一个 IP 地址或者主机名。
192、168.1.1 192、168.1.2 192、168.1.3
接下来,我们需要确定要检查的端口范围,通常情况下,我们会检查常见的服务端口,如 80、443、8080 等,在本例中,我们将检查这些端口。
2. 编写 Shell 脚本
根据上述准备工作,我们可以编写如下 Shell 脚本:
!/bin/bash 定义服务器列表文件和端口范围 SERVER_FILE="servers.txt" PORT_RANGE="80-443" 遍历服务器列表文件中的每一行 while read server; do 使用 for 循环遍历端口范围 for port in $(seq $PORT_RANGE); do 使用 nc 命令检查端口是否开放 nc -z -w 5 $server $port > /dev/null 2>&1 根据 nc 命令的返回值判断端口是否开放 if [ $? -eq 0 ]; then echo "服务器 $server 的 $port 端口是开放的" else echo "服务器 $server 的 $port 端口是关闭的" fi done done < $SERVER_FILE
将以上脚本保存为 check_ports.sh,并给予执行权限:
chmod +x check_ports.sh
3. 运行脚本
运行脚本,查看多个服务器的端口是否开放:
./check_ports.sh
脚本将会输出每个服务器在指定端口范围内的端口状态,如果需要查看详细的错误信息,可以将脚本中的 > /dev/null
这一行删除,这样,当端口关闭时,nc 命令会输出详细的错误信息。
for port in $(seq $PORT_RANGE); do ...(省略其他代码) if [ $? -ne 0 ]; then 注意这里应该是 $? != 0 而不是 $? == 0 nc_error=$(nc_error) 这里假设存在一个变量用于存储错误信息,实际应用中可能需要修改这部分代码以获取详细错误信息 echo "服务器 $server 的 $port 端口是关闭的,错误信息:$nc_error" else echo "服务器 $server 的 $port 端口是开放的" endif done < $SERVER_FILE
4. 其他问题与解答
A1. 如何获取所有可用的 IP 或者主机名?
答:可以使用 nmap
或者 ping
命令来获取所有可用的 IP 或者主机名,使用 nmap
可以扫描整个网络并显示在线主机的信息:
nmap --all-hosts | grep "Up" | cut -d' ' -f2 | sort | uniq > available_ips.txt
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/473385.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除