我想运行“socat”命令将端口 162 上的信息复制到另一台计算机的同一端口上。
我添加了一个 systemd 来执行此过程:
[Unit]
Description=Socat SNMP Traps 162
[Service]
User=root
Type=forking
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=socat-trap-162
ExecStart=sudo socat -d -d UDP-LISTEN:162,fork UDP:10.127.130.70:162
Restart=on-failure
[Install]
WantedBy=multi-user.target
然而,当运行systemd时,会创建几个PID,如下所示这个屏幕截图ps | grep
。
是否有可能只创建初始 PID?
因为新的 PID 一直在创建。
答案1
UDP 和 UDP-LISTEN 地址创建需要显式关闭的伪流连接,因为 UDP 不会传输关闭状态,或者使用选项让它们超时。-T <seconds>
当你只有一个陷阱发送者时,你可以使用命令行而不需要 fork:
socat -d -d UDP-LISTEN:162 UDP:10.127.130.70:162
当您有多个发件人时,我建议使用数据报模式:
socat -d -d UDP-RECV:162 UDP-SENDTO:10.127.130.70:162
请注意,UDP-RECV 是单向的,可以很好地与 SNMP 陷阱配合使用,但不能与 SNMP 命令配合使用。