script laten wachten op output telnet

Pagina: 1
Acties:

  • connected
  • Registratie: Juni 2001
  • Laatst online: 04-02 22:07

connected

tja daarnet deed ie nog :P

Topicstarter
ik heb een scriptje gemaakt die moet gaan kijken of een server draait (mail,http)

nu kan ik wel een telnet doen naar een mailserver maar dan blijf ik ingelogd totdat de server mij eruit gooit.
een pipe met quit erachter werkt ook niet want dan gaat het te snel
dus ik wil hem nu 30 sec ofzo laten wachten en dan laten quitten.

hoe kan ik dat het best oplossen:

zoiets heb ik nu (niet werkend):
#!/bin/sh

CHECK=`telnet $1 $2 `
VAL=`echo "$CHECK" | grep "*" | sleep "1" | quit `
if [ -z "$VAL" ]; then
cp -f /data/web/html/serverstatus/files/green.GIF /data/web/html/serverstatus/$3/status.GIF
fi
if [ -n "$VAL" ]; then
cp -f /data/web/html/serverstatus/files/red.GIF /data/web/html/serverstatus/$3/status.GIF
fi

bvd

[ Voor 5% gewijzigd door connected op 05-11-2003 11:04 ]


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
nmap, ping of en ander programma gebruiken dan telnet?

misschien dat je ook iets met netcat ( aka nc) kan doen?

of met een perl scriptje sockets openen en een timeout instellen.. (of met php fsockopen).

(PHP kan je ook vanaf de CLI runnen.... het is niet perse een web-page only iets ;) )

  • connected
  • Registratie: Juni 2001
  • Laatst online: 04-02 22:07

connected

tja daarnet deed ie nog :P

Topicstarter
hmm ja dat word me te moeilijk denk ik
ik zal even wat proberen met nmap

  • connected
  • Registratie: Juni 2001
  • Laatst online: 04-02 22:07

connected

tja daarnet deed ie nog :P

Topicstarter
k heb inmiddels een manier gevonden met nmap thnx man !!

  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Misschien kun je dan nog voor toekomstige geinteresseerden posten hoe je het nu precies hebt opgelost?

  • connected
  • Registratie: Juni 2001
  • Laatst online: 04-02 22:07

connected

tja daarnet deed ie nog :P

Topicstarter
jazekers hij is eigenlijk best simpel zo :

#!/bin/sh

CHECK=`nmap -sS $1 -p $2 `
VAL=`echo "$CHECK" | grep "open"`
echo $CHECK
if [ -n "$VAL" ]; then
cp -f /data/web/html/serverstatus/files/green.GIF /data/web/html/serverstatus/$3/status.GIF
echo ok!!
fi
if [ -z "$VAL" ]; then
cp -f /data/web/html/serverstatus/files/red.GIF /data/web/html/serverstatus/$3/status.GIF
echo BAD!!
fi

hij is te gebruiken door dit in te vullen:
./script xxx.xxx.xxx.xxx 25 serverx

het eerste is het ip daarna de poort en dan de mapnaam waar een plaatje heen word gekopieerd.

dit plaatje vraag ik op in een html pagina :)

Verwijderd

Doe dan op z'n minst een connect() scan (-sT) in plaats van een SYN scan (-sS). Hiermee voorkom je dat eventuele tussenliggende packetfilters je monitoring packets tegenhouden. Tevens voorkom je hiermee een mogelijke DoS aanval op je ip stack:

Je ip stack heeft 2 buffers. Als je een connectie probeert te establishen met de stack, word de connectie in de tabel van nieuwe connecties gezet. Zodra de TCP 3-way handshake voltooit is, word de connectie verplaats naar de tabel met de established connecties.
Op het moment dat je een poort scanned mbv een SYN scan, dan word er een zogeheten half-open connectie opgezet (eg, er word geen volledige 3-way handshake gedaan). Deze half-open connectie komt dus in de tabel van nieuwe connecties te staan. Aangezien je systeem maar een X aantal half-open connecties aankan, zal op het moment dat die buffer vol zit (eg, je loopt als een gek te monitoren met SYN scans) je systeem nieuwe (legitieme) connecties weren, totdat deze buffer leeg is. (aka, SYN scans kunnen je IP stack dos'sen...)

Met een connect() scan, word een volledige 3-way handshake gedaan, waardoor je tabel met nieuwe connecties niet vervuilt raakt met half-open connecties.

[ Voor 82% gewijzigd door Verwijderd op 05-11-2003 15:41 ]


  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

Wat je nu test is of er een poort openstaat, niet of de service werkt.
Met een iets uitgebreider script (perl, of expect) kun je ook testen of de service 'leeft' door niet alleen te testen of de poort open is, maar ook of je een servicebanner terugkrijgt als:
code:
1
220 mail.domein.nl ESMTP Exim 4.05 Wed, 05 Nov 2003 21:08:22 +0100


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
# test of mailserver leeft
use Net::Telnet ();

my $server = "192.168.0.100";

$t = new Net::Telnet (port => "25",errmode => "return");
$t->open($server);
$t->waitfor('/^220.*$/');
$msg = $t->errmsg;
if ($msg) {
    $t->close;
    print "down\n";
} else {
    $t->print("quit");
    $t->close;
    print "up\n";
}


Met enige aanpassingen (andere 'port', andere 'waitfor' maak je dit script geschikt voor de service die je wil testen, en heb je zo wat standaardscriptjes om al je services te testen met een door jou bepaalde returnwaarde.

[ Voor 28% gewijzigd door pinball op 05-11-2003 21:20 ]

Whenever you find that you are on the side of the majority, it is time to reform.


  • Wilke
  • Registratie: December 2000
  • Laatst online: 29-04 12:38
Inderdaad, de poort kan zelfs nog open staan op een verder compleet dood systeem, zoals iemand in een andere thread onlangs nog had: userland gecrashed, maar kernel en dus IP stack lopen nog en nemen dus "gewoon" connecties aan die daarna niet afgehandeld worden.

Dus zo weet je nog bijna niks...

  • jvhaarst
  • Registratie: Maart 2000
  • Laatst online: 03-04 22:46

jvhaarst

Eendracht maakt macht

Het kan wel met nmap, maar dan met de "-sV" switch aan.
Voorbeeld :
code:
1
2
3
4
5
6
7
8
root@h2o2:/home/jvhaarst# nmap -sV -p25 net.wur.nl

Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-07 07:33 CET
Interesting ports on net2.wur.nl (137.224.248.102):
PORT   STATE SERVICE VERSION
25/tcp open  smtp    Postfix smtpd

Nmap run completed -- 1 IP address (1 host up) scanned in 0.382 seconds


Als je service het nog doet, dan zal er dus een naam staan, anders niet.
Ik vind zelf nmap wat makkelijker te tweaken dan telnet in Perl, maar dat kan iedereen natuurlijk zelf uitmaken.

If you don’t have enough time, stop watching TV.

Pagina: 1