linux批量检测ip端口

#!/bin/bash

IP_PORT="
10.11.XXX.177 23306
10.11.XXX.101 1529
。。。。
"

#检查
echo “KaTeX parse error: Expected group after '^' at position 22: …T" | grep -Ev "^̲” |
while read line;do
echo “$line” | grep -qE “^#”
if [ ? − e q 0 ] ; t h e n e c h o " ? -eq 0 ];then echo " ?eq0];thenecho"line"
continue
fi

#normal line with ip and port
connectFlag=“DOWN”
nc -z -w 1 $line
if [ $? -eq 0 ];then
connectFlag=“UP”
fi

printf “%-20s %5s %5s\n” $line $connectFlag
done

### 实现批量检测端口连通性的方法 在 Linux 环境下,可以利用 `nmap` 工具或编写自定义的 Shell 脚本来实现批量检测端口连通性。以下是两种常见的解决方案。 #### 方案一:使用 `nmap` 进行端口扫描 `nmap` 是一款强大的网络扫描工具,能够快速检测目标主机上的开放端口和服务状态。其基本语法如下: ```bash nmap -p <端口号> <目标IP> ``` 其中 `-p` 参数指定了要扫描的目标端口,而 `<目标IP>` 则表示待检测的主机地址。如果需要批量检测多个 IP 地址及其特定端口的状态,则可以通过循环结构配合 `nmap` 来完成任务[^4]。 下面是一个简单的 Bash 脚本实例,它会对一组预设的 IP 地址列表中的每一台设备执行 FTP (21号端口) 的可用性检查: ```bash #!/bin/bash # 定义IP数组 IPS=("192.168.1.1" "192.168.1.2" "192.168.1.3") for ip in "${IPS[@]}" do RESULT=$(nmap -p 21 "$ip" | grep 'open') if [[ ! -z "$RESULT" ]]; then echo "Port 21 is OPEN on $ip" else echo "Port 21 is CLOSED or FILTERED on $ip" fi done ``` 此脚本首先定义了一个包含若干个 IP 地址的字符串数组 IPS[] ,接着通过 for 循环逐一访问这些地址并调用 nmap 对它们的第 21 号端口进行探测 。最后依据返回的结果判断该端口是否处于开启状态,并打印相应的提示信息到终端上[^5]。 #### 方案二:构建基于 TCP 握手原理的手动连接尝试 除了借助专门软件外,还可以自己动手打造简易版的服务可达性验证程序——即模仿三次握手过程向远程服务器发起 SYN 请求后再观察是否有 ACK 应答作为响应。这种方法虽然复杂度较高但也更加灵活可控。 这里给出一 Python 版本的例子供参考学习: ```python import socket def check_port(ip, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) result = sock.connect_ex((ip, int(port))) if result == 0: print(f"{ip}:{port} is UP") else: print(f"{ip}:{port} is DOWN") sock.close() except Exception as e: print(e) if __name__ == "__main__": targets = ["192.168.1.{}".format(i) for i in range(1, 4)] ports = [22] for target in targets: for p in ports: check_port(target, p) ``` 上述代码片展示了如何创建一个新的套接字对象并通过 connect_ex() 函数试图建立至指定位置及端口的有效链接。当函数成功时会得到零值反馈;反之则意味着失败。据此可判定相应服务当前是否在线工作正常[^1].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值