Toon posts:

mailservertest scriptje, werkt niet telnet gaat hangen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het volgende script leest het bestandje /etc/scripts/mailservertest/mailserver.list

de inhoud van dit bestandje ziet er ongeveer zo uit:
----------------------
maakt niet uit wat hier allemaal staat.nl
blaat.nl
pop.zonnet.nl
boom-it.nl
----------------------

En het scriptje hieronder maakt een telnet verbinding en de output word naar /tmp/mailservertest_telnet geschreven hier krijgt telnet 10 seconden de tijd voor. Het bestand /tmp/mailservertest_telnet word bekeken of er connectie is geweest. Dat werkt prima!!!

MAAR het probleem is altijd als je een & gebruikt doen mij bij scripts altijd raar. Telnet wil maar een keer connectie maken (de eerste keer dat er connectie kan worden gemaakt is bij pop.zonnet.nl en daarna stopt mijn script.

DUS wanneer telnet een keer connectie heeft gehad dan kapt het script er mee bij de volgende telnet actie.

HOE kan dat??? en hoe kan ik dat oplossen.


-----------------------scriptje--------------<mailservertest.sh
while read LINE
do
REGEL="$LINE"
MAILTEST_SERVER=`echo $REGEL | awk '{print $1}'`

telnet $MAILTEST_SERVER 25 > /tmp/mailservertest_telnet&
sleep 10

MAILTEST_TELNETOUTPUT=`cat /tmp/mailservertest_telnet | grep Connected | awk '{print $1}'`

echo "$MAILTEST_SERVER"

if [ "$MAILTEST_TELNETOUTPUT" != "Connected" ]; then
echo "Kan geen connectie met de mailserver $MAILTEST_SERVER maken."
fi

done < /etc/scripts/mailservertest/mailserver.list

killall telnet
-----------------------------------------------------------

Verwijderd

Ik zou beginnen met "#!/bin/bash" oid. Nog handiger is om het even te bekijken met "#!/bin/bash -x" dat zie je iig wat er mis gaat, het lijkt me vrij sterk dat telnet hangt, hij blijft wel connected natuurlijk.
code:
1
 done < /etc/scripts/mailservertest/mailserver.list
Kan me niet voorstellen dat je input voert aan "done"? Al zou het werken kom je nooit verder dan de eerste in die lijst. Je kan die input beter aan je script voeren, dat werkt wel (en lost jou probleem op) Die killall zou ik voor je done zetten, anders gaat ie pas killen als jij al 100 telnet sessies open hebt staan. Liever eigenlijk helemaal geen killall, beetje jammer van wat er al open stond, maargoed dat terzijde.

Ik heb geen telnet geinstalleerd (nc doet hetzelfde), dit doet wat jij bedoelt, schat ik.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash

while read LINE
do
REGEL="$LINE"
MAILTEST_SERVER=`echo $REGEL | awk '{print $1}'`

nc $MAILTEST_SERVER 25 > /tmp/mailservertest_telnet&
sleep 10

MAILTEST_TELNETOUTPUT=`cat /tmp/mailservertest_telnet`
echo $MAILTEST_TELNETOUTPUT
killall nc
done


met als uitvoer

code:
1
2
3
4
5
6
7
8
thomas@linux thomas $ ./server2.sh < lijst
220 helium-v1.priv.quicknet.nl -- Server ESMTP 
(iPlanet Messaging Server 5.2 HotFix 0.8 (built Jul 12 2002))
 punt!
220 mail.moerkerken.lan ESMTP Postfix
 punt!
220 s538.widexs.nl ESMTP Postfix
 punt!


Daar kan je dan met telnet weer "Connected" op greppen, enz.
Succes.

Verwijderd

Topicstarter
Ja tuurlijk ben ik vergeten die #!/bin/bash die heb ik er wel staan maar niet mee geknipt en de header ook niet. En inderdaad die killall telnet heb ik ook wel eens boven done geprobeerd, dat is wel beter.

Dat klopt wat je zecht telnet loopt niet vast maar wanneer ik een tweede keer keer telnet opstart stop het scriptje ook (en dat is de bedoeling niet), hoe kan dit, dit heb ik altijd als ik een & gebruik in een scriptje. Wie heeft hier ook problemen mee gehad en weet het op te lossen of op een andere mannier?


Wat bedoel je met "Je kan die input beter aan je script voeren". Voorbeeldje ?

  • serkoon
  • Registratie: April 2000
  • Niet online

serkoon

mekker.

Waarom gebruik je niet netcat? Da's voor zulke dingen bedoeld, telnet niet.