Executing script on receiving incoming connection with xinetd
Solution 1
service testservice
{
port = 5900
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/testscript.sh
server_args = test
}
You're right, I couldn't get yours to work. The above seemed to.
Make sure that testscript.sh is set +x and at the top contains #!/bin/sh (in your example it does appear that way)
Solution 2
It works perfectly fine for me trying on localhost. Can you do a
tail -f /var/log/syslog | grep xinetd
while restarting the xinetd service? Also try running nc on the same host where you have xinetd and see if it works on localhost.
Related videos on Youtube
user1812379
Updated on September 18, 2022Comments
-
user1812379 over 1 year
I want xinetd to execute a shell script when a connection is received on a certain port. To accomplish this, followed this tutorial: [enter link description here][1]
Unfortunately, the whole thing doesn't work as I hoped that's why I am going to show you my configuration.
The script that is called by xinetd is located at /usr/local/bin. It can be executed without any problems:
#!/bin/bash echo "connection received"
/etc/xinetd.d/testservice has this content:
service testservice { disable = no socket_type = stream protocol = tcp port = 5900 log_on_success += USERID log_on_failure += USERID server = /usr/local/bin/testservice user = root instances = UNLIMITED wait = no log_type = SYSLOG daemon debug }
In /etc/services I added this line:
testservice 5900/tcp
Then I restarted xinetd with
service xinetd restart
Finally, I tried to connect to the client:
nc host1 5900
Could someone please tell me what went wrong here?
Here are some lines from /var/log/syslog.1:
Nov 22 10:07:33 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/chargen [file=/etc/xinetd.conf] [line=17] Nov 22 10:07:33 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/daytime [file=/etc/xinetd.d/daytime] [line=28] Nov 22 10:07:33 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/discard [file=/etc/xinetd.d/discard] [line=26] Nov 22 10:07:33 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/echo [file=/etc/xinetd.d/echo] [line=25] Nov 22 10:07:33 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/exec [file=/etc/xinetd.d/exec] [line=26] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/login [file=/etc/xinetd.d/login] [line=8] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/rexec [file=/etc/xinetd.d/rexec] [line=13] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/rexecd [file=/etc/xinetd.d/rexecd] [line=0] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/rlogin [file=/etc/xinetd.d/rlogin] [line=10] Nov 22 10:07:34 ubuntu1 acpid: 33 rules loaded Nov 22 10:07:34 ubuntu1 acpid: waiting for events: event logging is off Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/rsh [file=/etc/xinetd.d/rsh] [line=10] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/shell [file=/etc/xinetd.d/shell] [line=11] Nov 22 10:07:34 ubuntu1 xinetd[886]: Reading included configuration file: /etc/xinetd.d/time [file=/etc/xinetd.d/time] [line=11] Nov 22 10:07:34 ubuntu1 xinetd[886]: removing chargen Nov 22 10:07:34 ubuntu1 xinetd[886]: removing chargen Nov 22 10:07:34 ubuntu1 xinetd[886]: removing daytime Nov 22 10:07:34 ubuntu1 xinetd[886]: removing daytime Nov 22 10:07:34 ubuntu1 xinetd[886]: removing discard Nov 22 10:07:34 ubuntu1 xinetd[886]: removing discard Nov 22 10:07:34 ubuntu1 xinetd[886]: removing echo Nov 22 10:07:34 ubuntu1 xinetd[886]: removing echo Nov 22 10:07:34 ubuntu1 xinetd[886]: removing time Nov 22 10:07:34 ubuntu1 xinetd[886]: removing time Nov 22 10:07:34 ubuntu1 xinetd[886]: bind failed (Address already in use (errno = 98)). service = exec Nov 22 10:07:34 ubuntu1 xinetd[886]: Service exec failed to start and is deactivated. Nov 22 10:07:34 ubuntu1 xinetd[886]: bind failed (Address already in use (errno = 98)). service = login Nov 22 10:07:34 ubuntu1 xinetd[886]: Service login failed to start and is deactivated. Nov 22 10:07:34 ubuntu1 xinetd[886]: bind failed (Address already in use (errno = 98)). service = shell Nov 22 10:07:34 ubuntu1 xinetd[886]: Service shell failed to start and is deactivated. Nov 22 10:07:34 ubuntu1 xinetd[886]: xinetd Version 2.3.14 started with libwrap loadavg options compiled in. Nov 22 10:07:34 ubuntu1 xinetd[886]: Started working: 3 available services
The other services seem to run:
netstat -an | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:512 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:513 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 10248 /run/user/user1/keyring-0bvpKQ/control unix 2 [ ACC ] STREAM LISTENING 10250 /run/user/user1/keyring-0bvpKQ/ssh unix 2 [ ACC ] STREAM LISTENING 8087 /tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 10038 @/tmp/dbus-3MCEY0sgqz unix 2 [ ACC ] STREAM LISTENING 689 @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7758 /var/run/cups/cups.sock unix 2 [ ACC ] STREAM LISTENING 986 @/org/bluez/audio unix 2 [ ACC ] STREAM LISTENING 10192 /tmp/.pcmanfm-socket--0-user1 unix 2 [ ACC ] STREAM LISTENING 8086 @/tmp/.X11-unix/X0 unix 2 [ ACC ] SEQPACKET LISTENING 882 /run/udev/control unix 2 [ ACC ] STREAM LISTENING 913 /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 10028 /tmp/ssh-1PFvKafVKThh/agent.1507 unix 2 [ ACC ] STREAM LISTENING 34594 /tmp/.lxterminal-socket:0-user1 unix 2 [ ACC ] STREAM LISTENING 968 /var/run/avahi-daemon/socket unix 2 [ ACC ] STREAM LISTENING 982 /var/run/sdp unix 2 [ ACC ] STREAM LISTENING 10629 /tmp/.menu-cached-:0-user1 unix 2 [ ACC ] STREAM LISTENING 8433 /var/run/acpid.socket
Maybe this is also helpful:
service xinetd restart stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.73" (uid=1000 pid=5311 comm="stop xinetd ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init") start: Rejected send message, 1 matched rules; type="method_call", sender=":1.74" (uid=1000 pid=5308 comm="start xinetd ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
-
LtWorf over 11 yearsDid you put your configuration file in /etc/xinetd.d/testservice? It doesn't list it in the log.
-
user1812379 over 11 yearsYes, the service is in the same directory as all other service files (rlogin, rexec, time etc.).
-
Pavel Šimerda almost 10 yearsYou're missing type=unlisted.