You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程获取iSeries端口信息并终止本地端口多余已建立连接

可行实现方案

TCP连接信息获取方式

你当前环境是IBM i(OS/400)平台,有三种稳定的可编程连接信息获取渠道,全部可以精准过滤端口、连接状态,不会误读监听器信息:

  • 系统原生API调用:直接调用QTOCRTVTC(Retrieve TCP/IP Connection Information)API,可直接传入筛选条件:本地端口9020、连接状态*ESTABLISHED,返回结果结构化存储每个连接的远程IP、远程端口,不需要解析命令行文本,支持CL、RPG、C、Python(通过itoolkit调用)等所有平台兼容的开发语言,稳定性最高。
  • 系统命令导出文件解析:执行WRKTCPSTS OPTION(*CNN) OUTPUT(*OUTFILE) OUTFILE(QTEMP/TCPSTAT)命令,会把当前所有TCP连接的结构化数据输出到QTEMP库下的TCPSTAT物理文件,文件内置固定字段:LCLPORT对应本地端口、RMTORT对应远程端口、CNNSTATE对应连接状态、CNNATYPE标识条目是活动连接还是监听器,直接读取字段做判断即可,开发门槛最低。
  • PASE环境命令调用:如果环境开启了PASE(AIX兼容运行环境),可以直接调用PASE内的ss -tan或者netstat -an命令,和Linux/Unix下的用法完全一致,过滤本地9020端口、ESTABLISHED状态的行提取远程端口即可,适合用shell、Python脚本快速开发。

自动检测+异常连接终止逻辑

按以下流程实现即可,全程不会影响9020端口的监听器正常运行:

  1. 拉取全量TCP连接数据后做第一层过滤:仅保留本地端口为9020、连接状态为ESTABLISHED的条目,直接排除同端口下状态为LISTEN的监听器条目,从筛选逻辑上避免误操作监听器。
  2. 统计筛选后条目的远程端口总数:如果数量≤1,直接退出程序不做任何操作;如果数量>1,即触发单本地端口挂载多远程连接的异常场景。
  3. 遍历所有异常连接条目,提取每条连接的远程IP、远程端口,逐次执行ENDTCPCNN命令终止对应连接,命令标准写法如下:
    ENDTCPCNN PROTOCOL(*TCP) LCLINTNETA('*') LCLPORT(9020) RMTINTNETA('<填入对应远程IP>') RMTPORT(<填入对应远程端口>)
    
    该命令只会终止匹配「本地端口9020+指定远程IP+指定远程端口」四元组的单条已建立连接,完全不会触碰同端口的监听器,不需要额外做监听器保活操作。
  4. 将写完的程序注册到系统作业调度器,按你需要的检测频率(比如每30秒/1分钟)执行一次,即可自动处理异常,连接终止后数秒业务会自动重连恢复。

注意事项

  • 执行终止操作时绝对不能省略远程IP、远程端口参数,模糊匹配终止9020端口连接会直接杀掉监听器,必须传全四元组参数做精准匹配。
  • 运行程序的用户配置文件需要带有*IOSYSCFG特殊权限,否则会出现API调用失败、ENDTCPCNN命令执行无权限的问题。
  • 如果采用NETSTAT导出outfile的方案,注意端口字段为数值型、连接状态字段为固定编码值,匹配规则不要写错。

内容的提问来源于stack exchange,提问作者geojf3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:27:28