Xinetd + BashScript

NetRat

Member
Guten Tag liebe Community,

ich versuche mich derzeit an einer Schnittstelle, die auf einem Server ein Bash Script ausführt und Argumente annimmt. Den Service für das Script lege ich via xinetd an, der Service ist aktiv und der Port auch nach außen erreichbar.

Code:
service myservice
{
        socket_type     = stream
        protocol        = tcp
        wait            = yes
        user            = root
        server          = /root/trigger.sh
        server_args     = $1 $2
        port            = 123456
        only_from       = 12.34.56.78
}
Hier stellt sich die erste Frage: Wie gehe ich mit server_args um? Ich vermute meine Zeile macht eher keinen Sinn.

Das Script ist ein simples Bash-Script, ähnlich diesem:
Code:
#!/bin/bash
arg1=$1
arg2=$2
sum=$arg1+$arg2
echo $sum
exit $sum

Via Telnet sieht das dann so aus:
Trying 92.34.56.78...
Connected to 92.34.56.78.
Escape character is '^]'.
Connection closed by foreign host.
Der Syslog des Servers ist sauber.

Ich komme via Telnet nicht dazu eine Eingabe zu tätigen, da die Verbindung umgehend beendet wird. Ich möchte diese Schnittstelle gerne von einem anderen Bash-Script auf einem anderen Server aufrufen. Wie kann ich das möglichst einfach ansteuern, kann mir ggf. jemand eine Anwendung empfehlen?

Grüße
NetRat

(Zugegeben passt der Xinetd Teil weniger in diese Kategorie. Primär geht es aber darum wie ich die Schnittstelle von außen aufrufe. Nach ermessen verschieben :P )
 
Problem teilweise gelöst.
-------------------
Xinetd Config File
Code:
service myservice
{
        socket_type     = stream
        protocol        = tcp
        wait            = [B]no[/B]
        user            = root
        server          = /root/trigger.sh
[COLOR="DarkRed"][B]#[/B]        server_args     = $1 $2[/COLOR]
        port            = 123456
        only_from       = 12.34.56.78
}

So werden Parameter vom Bash Script angenommen:
Code:
#!/bin/bash

read arg1
read arg2

# Irgendein Script .....
echo $arg1
echo $arg2

exit 1

Via Telnet sieht das dann so aus:
Code:
Trying 90.34.56.78...
Connected to 90.34.56.78.
Escape character is '^]'.
[COLOR="Orange"]zeile1
zeile2[/COLOR]
[COLOR="Green"]zeile1
zeile2[/COLOR]
Connection closed by foreign host.
Orange = Eingabe
Grün = Ausgabe
 
Last edited by a moderator:
Naja, die Ausgabe Deiner Telenet-Session sieht doch so aus als ob Dein Problem komplett gelöst ist oder was hättest Du jetzt noch erwartet?

An dem Kommentar "# Irgendein Script ....." sollte es bestimmt nicht liegen, da dies ja für die Ausführung Deines Skriptes keine Bedeutung hat.
 
Es ging prinzipiell noch um das ansprechen über ein Script, hat sich aber erledigt:

Code:
#!/usr/bin/perl
use Net::Telnet; $telnet = new Net::Telnet ( Port=> 12345, Timeout=>10, Errmode=>'die');
$telnet->open('190.34.56.78');
$telnet->print('lol');
$out = $telnet->print('baggins');
$output = $telnet->waitfor('/ENDOFSOCKETSTREAM$/i') or die(0);
print $output;

Im Serverscript einfach am Ende noch
Code:
echo "ENDOFSOCKETSTREAM"
Problem gelöst. Close.
 
Last edited by a moderator:
Back
Top