Bash skript jako služba

HackForum

Bash skript jako služba#
Zdravím,
Napsal jsem si program v Bashi a s pomocí Xinetd ho spustil jako službu. Zkoušel jsem i Inetd a chyba je vždy stejná:
[kenji@astra]:~ telnet localhost 5555
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Login: kenji
Unknown login..exiting...
Connection closed by foreign host.

Přihlašovací funkce programu:
login() {
if [ -d $DATA ]; then
echo -n "Login: "
read login
if [ -f $DATA/$USERBASE/$login/$login.pass ] ; then
. $DATA/$USERBASE/$login/$login.pass
echo -n "Password: "
stty -echo
read pass
stty echo
if [ "$(echo $pass | sha1sum)" = "$PASS" ]; then
echo ""
echo "Password accepted for $login"
echo "Logging in..."
sleep 1
clear
if [ -f $DATA/$USERBASE/$login/$login.cfg ]; then
. $DATA/$USERBASE/$login/$login.cfg
fi
if [ $LANG = "cs" ]; then
menu-cs
else
menu
fi
else
echo ""
echo "Wrong password..bye,bye..."
exit 1
fi
else
echo "Unknown login..exiting..."
exit 1
fi
else
instalation
fi
}


Když ten skript spustím normálním způsobem, tak funguje bez problému. Pokud tu funkci upravím a odstraním ověřování, jestli účet existuje, tak dostanu tuto chybu:
[kenji@astra]:~ telnet localhost 5555
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Login: kenji
.pass: No such file or directory /usr/local/lib/admin/users/kenji
Password: stty: standard input: Invalid argument

Přitom ten adresář opravdu existuje a nevím o tom, že by to Xinetd spouštěl v chrootu.
Záznam v xinetd:
service admin
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/sbin/admin
port = 5555
disable = no
}


Službu admin jsem samozřejmě do /etc/services přidal.
Ještě jsem zkoušel přidat na začátek skriptu proměnnou PATH, taky nepomohlo.
Neví někdo kde může být chyba? Už si s tím nevím rady a na Googlu jsem nic nenašel, naopak mi jen potvrdil to, že by mělo být vše vpořádku.

----------
Ifrit.eu - Internet services
(odpovědět)
Kenji | E-mail | Website29.12.2008 0:17
re: Bash skript jako služba#
telnet do radku pridava znak \r, po nacteni ho vyhod a snad by to melo slapat.

(odpovědět)
prc | 213.211.51.*29.12.2008 9:35
re: Bash skript jako služba#
Super, to jsem nevěděl. Přes netcat se lognout jde vpohodě, až na to že nejde stty -echo, ale to snad už nějak vyřeším, děkuju :)

----------
Ifrit.eu - Internet services
(odpovědět)
Kenji | E-mail | Website29.12.2008 15:55
re: Bash skript jako služba#
stty pracuje s tty, ktere program spusteny pres inetd samozrejme nema. celkove jsou terminalove veci slozitejsi nez se zdaji a pokud ma byt na strane klienta telnet, tak uplne nejjednodussi asi bude, kdyz ten program budes spoustet pres telnetd (/nekde/in.telnetd -L tvujprogram), cimz ti vsechny tyhle starosti odpadnou.
(odpovědět)
prc | 213.211.51.*29.12.2008 19:35
re: Bash skript jako služba#
Super, děkuju už to tak mám vyřešené :)
Ještě jedna otázka nakonec - jak dalece si myslíte, že je ten skript, spouštěný tímto způsobem, bezpečný, zvlášť když je spouštěný pod rootem? Jinou možnost než spustit pod rootem stejně nemám, jelikož musí mít maximální práva.
Kdyžtak kdo bude mít čas a chuť, tak si s tím může zkusit pohrát na adrese 212.80.78.34 a portu 5555.

----------
Ifrit.eu - Internet services
(odpovědět)
Kenji | E-mail | Website29.12.2008 21:39

Zpět
 
 
 

 
BBCode