Xinetd: 서버 스크립트에서 연결 종료

Xinetd: 서버 스크립트에서 연결 종료

나는 스크립트인 xinetd 서비스를 가지고 있으며 출력은 원격 호스트의 netcat에 의해 읽혀집니다.

그러나 서버의 스크립트가 종료되면 netcat은 여전히 ​​기다리지만 아무 작업도 수행하지 않습니다. 서버에 대한 연결을 닫거나 "파일 끝" 등을 보내려면 어떻게 해야 합니까?

내 서비스:

service myservice
{
   port            = 2222
   socket_type     = stream
   protocol        = tcp
   wait            = no
   server          = /opt/myscript.sh
   user            = root
   disable         = no
}

내 스크립트:

#!/bin/sh

##Example:
echo "Hello World!"

네트워크 고양이 출력:

[me@mypc]# nc myhost 2222
Hello World!
*blinking cursor forever*

출력(꼬리) strace nc myhost 2222:

connect(3, {sa_family=AF_INET6, sin6_port=htons(2222), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = -1 EINPROGRESS (Operation now in progress)
select(4, [3], [3], [3], {tv_sec=10, tv_usec=0}) = 1 (out [3], left {tv_sec=9, tv_usec=999997})
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
select(4, [0 3], [], [], NULL)          = 1 (in [3])
recvfrom(3, "Hello World!\n", 8192, 0, 0x████████████, [128->0]) = 13
write(1, "Hello World!\n", 13Hello World!
)          = 13
select(4, [0 3], [], [], NULL)          = 1 (in [3])
recvfrom(3, "", 8192, 0, 0x████████████, [128->0]) = 0
close(1)                                = 0
select(3, [0], [], [], NULL

그냥 거기에서 멈 춥니 다. 그런 다음 ^C를 수행해야 마지막 줄이 실제로 다음과 같이 보입니다.

select(3, [0], [], [], NULL^Cstrace: Process 6232 detached
 <detached ...>

TCP 덤프:

IP6 localhost.36082 > localhost.myservice: Flags [S], seq 3879998021, win 43690, options [mss 65476,sackOK,TS val 3800136568 ecr 0,nop,wscale 7], length 0
IP6 localhost.myservice > localhost.36082: Flags [S.], seq 3455514626, ack 3879998022, win 43690, options [mss 65476,sackOK,TS val 3800136568 ecr 3800136568,nop,wscale 7], length 0
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 1, win 342, options [nop,nop,TS val 3800136568 ecr 3800136568], length 0
IP6 localhost.myservice > localhost.36082: Flags [P.], seq 1:14, ack 1, win 342, options [nop,nop,TS val 3800136571 ecr 3800136568], length 13
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 14, win 342, options [nop,nop,TS val 3800136571 ecr 3800136571], length 0
IP6 localhost.myservice > localhost.36082: Flags [F.], seq 14, ack 1, win 342, options [nop,nop,TS val 3800136571 ecr 3800136571], length 0
IP6 localhost.36082 > localhost.myservice: Flags [.], ack 15, win 342, options [nop,nop,TS val 3800136612 ecr 3800136571], length 0

관련 정보