# Shell Script über xinetd steuern

## Gucky_der_Mausbiber

Nabend,

ich habe folgendes Problem: Ich nutze zuhause Steckdosenleiste die sich über USB schalten lassen. Zur Steuerung habe ich auf meinem gentoo-Server folgendes Script 

```
#!/bin/bash

if [ $2 = "0" ] ; then

 leiste="01:01:4c:7c:43"

else

 leiste="01:01:4c:88:13"

fi

case "$1" in

on)

   /usr/bin/sispmctl -q -D $leiste -o $3

;;

off)

   /usr/bin/sispmctl -q -D $leiste -f $3

;;

esac

/usr/bin/sispmctl -nqg $3 -D $leiste
```

 Das ganze funktioniert von der Kommandozeile aus auch sehr gut. Jetzt möchte ich aber in Zukunft das ganze über meine lokale Intranet-Seite, bzw. über Smartphone-Apps steuern können. Zuerst dachte ich daran mit sudo zu arbeiten und das Script direkt von php aus aufzurufen. Nach langem lesen im Internet habe ich diese Idee dann aus verschiedenen Gründen verworfen. Stattdessen wird  im Internet immer wieder geraten das ganze über xinetd laufen zu lassen um dann per php netsockets oder einem telnet-Client darauf zugreifen zu können.

Diese Idee klingt einfach gut und würde mir diverse Steuerungsmöglichkeiten eröffnen.

Okay, mal abgesehen davon das ich noch keine Ahnung habe wie ich das mit den verschiedenen Variabeln machen muss die übergeben werden musste ich jetzt erstmal xinetd installieren und zum Laufen bekommen.

Gesagt getan, flux ein "emerge xinetd" und schon war alles installiert.

Jetzt habe ich versucht ein erstes Test-Script zum laufen zu bekommen. Ich habe mich dabei an folgende Anleitung gehalten http://www.troubleshooters.com/codecorn/sockets/

Das Problem ist das mein Script keine Daten zurück gibt.

```
server ~ # telnet 192.168.2.1 8111

Trying 192.168.2.1...

Connected to 192.168.2.1.

Escape character is '^]'.

Connection closed by foreign host.
```

Laut der Anleitung sollte der Fehler demnach im Script stecken, aber ich finde da keinen:

```
#!/bin/bash

/bin/echo -n "Hello World:" | /usr/bin/tee /tmp/log.log

/bin/date | /usr/bin/tee -a /tmp/log.log
```

Auch lasse ich das Script zum test als root ausführen, an Berechtigungen kann es also kaum liegen.

Ich bin einfach überfragt und irgendwie finde ich speziell zu dem Thema xinetd & Shell-Scripte nicht sonderlich viele nützliche Infos.

Kann mir bitte irgendwer helfen den Fehler zu finden?

----------

## Gucky_der_Mausbiber

Hat keiner eine Idee wo der Fehler liegen könnte, bzw. wie ich ihn finden kann?

----------

## thrashed

wie sieht denn deine xinet.d aus, also dein script unter /etc/xinet.d z.bsp: /etc/xinet.d/deinscript

ich brauch da auch immer 3 anläufte bis es funktioniert   :Embarassed: 

----------

## Gucky_der_Mausbiber

Nabend,

so hat leider ne ganze Weile gedauert bis ich antworten konnte, aber gab zwischenzeitlich wichtigere Probleme.

Jetzt wollte ich das Thema xinetd & Shell-Script nochmal angehen und bin wieder beim gleichen Fehler gelandet.

Hier erstmal mein Script welches laufen sollte :

```
#!/bin/bash

/bin/echo -n "Hello World:" | /usr/bin/tee /tmp/log.log

/bin/date | /usr/bin/tee -a /tmp/log.log
```

meine /etc/conf.d/xinetd

```
# /etc/conf.d/xinetd: config file for /etc/init.d/xinetd

XINETD_OPTS="-stayalive -reuse"
```

hier die entsprechende Datei /etc/xinetd.d/hello

```
# default: on

# description: Hello World socket server

service hello

{

   port            = 3333

   socket_type     = stream

   wait            = no

   user            = root

   server          = /home/xbmc/hello.sh

   log_on_success  += USERID

   log_on_failure  += USERID

   disable         = no

}
```

und das ganze habe ich auch unter /etc/services eingetragen 

```

# Local services

hello           3333/tcp                        # hello tutorial, delete when finished
```

Ich blicke wirklich nicht mehr durch, starten von xinetd geht ohne Probleme

```
server ~ # /etc/init.d/xinetd restart

 * Stopping xinetd ...                                                                                                                               [ ok ]

 * Starting xinetd ...                                                                                                                               [ ok ]
```

aber wenn ich versuche das Script zu starten geht nichts .... 

```
server ~ # telnet 192.168.2.1 3333

Trying 192.168.2.1...

telnet: Unable to connect to remote host: Connection refused
```

Ohne Angabe des Ports komme ich aber auch nur unwesentlich weiter ....

```
server ~ # telnet 192.168.2.1

Trying 192.168.2.1...

Connected to 192.168.2.1.

Escape character is '^]'.

Connection closed by foreign host.
```

Wie damals habe ich immer noch keine Ahnung was ich falsch mache oder welche Möglichkeiten ich sonst noch habe ein Script übers Netzwerk zu steuern. Das direkte ausführen der Scripts auf dem Server über php scheint ja nicht wirklich die beste Lösung zu sein.

Also nochmal an alle, kann mir bitte jemand dabei helfen? Mir sagen was ich falsch mache? Oder wie ich sonst ans Ziel kommen kann.

Danke.

----------

