"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>
트랩 발신자가 하나만 있는 경우 포크하지 않고 명령줄을 사용할 수 있습니다.
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 명령에서는 작동하지 않습니다.