[gelöst] Prüfen ob Port offen ist

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Noar
Beiträge: 27
Registriert: 25.09.2007 23:30:52
Lizenz eigener Beiträge: GNU Free Documentation License

[gelöst] Prüfen ob Port offen ist

Beitrag von Noar » 07.09.2009 17:33:01

Hi,

ich habe ein Skript, das in regelmäßigen Abständen aufgerufen wird.
Es prüft ob ein bestimmter Prozess läuft und wenn nicht, wird versucht diesen zu starten.
Misslingt das, sendet das Skript eine Mail an eine best. Adresse.

Jetzt würde ich gerne auch noch testen, ob auf dem Rechner, auf dem das Skript läuft,
ein bestimmter Port (80 und 8080) offen ist.

Weiß jemand, wie ich das am besten erledigen kann?
Geht das irgendwie mit netstat?

Schöne Grüße
Thomas
Zuletzt geändert von Noar am 17.09.2009 19:41:13, insgesamt 1-mal geändert.
-- GNU/Linux (Debian unstable) --
--- It is only in our decisions that we are important. Jean-Paul Sartre ---

Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

Re: Prüfen ob Port offen ist

Beitrag von minimike » 07.09.2009 19:24:41

sollte eigentlich mittels "netstat -npl PORTNUMBER" sowie mit "nmap IPADDRESS/HOSTNAME -p PORTNUMBER" zu erledigen sein.
Zum verfeinern mal die Manpage konsultieren ;)
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Prüfen ob Port offen ist

Beitrag von rendegast » 07.09.2009 19:52:04

echoping, hping2/3, httping
?

Fetter mit zabbix o.ä.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Noar
Beiträge: 27
Registriert: 25.09.2007 23:30:52
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Prüfen ob Port offen ist

Beitrag von Noar » 08.09.2009 10:58:01

Hi,

erstmal danke für eure Antworten.

NMAP ist natürlich eine Möglichkeit, damit bekomme ich es ganz gut hin. Allerdings würde ich gerne darauf verzichten,
da es eigentlich nicht auf dem Server zur Verfügung steht. Von allen genannten Tools ist nur NETSTAT verfügbar.

Leider liefert "netstat -npl PORTNUMBER" keine befriedigende Angabe. Und die Manpage leider auch nicht.
Ich kann zwar per "netstat" und "grep" die Zeile mit z.B. dem Port 80 rausfiltern, aber aus der Zeile muss ich ja noch rausbekommen, ob der
Status CONNECTED oder so besteht. Also noch mal per "grep" z.B.

Kann man denn 2 grep-Anweisungen verketten?

Ansonsten bleibt mir wohl nur, "nmap" nachzuinstallieren.

Gruß und Dank
Thomas
-- GNU/Linux (Debian unstable) --
--- It is only in our decisions that we are important. Jean-Paul Sartre ---

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: Prüfen ob Port offen ist

Beitrag von nepos » 08.09.2009 13:17:30

Also, netstat -npl PORT ist Käse. Der PORT wird da nicht benutzt.
Würde das vorschlagen:
netstat -4tnl | grep ":PORT "
Das liefert dir alle IPv4-Ports für TCP, die auf Status LISTEN stehen und mit grep filterst du halt nach dem gesuchten Port. Der Doppelpunkt und das Leerzeichen dafür, dass du auch den richtigen erwischt und nicht mit PORT gleich 80 auch 880, 8080 oder ähnliches matched.
LISTEN deshalb, weil du ja Ports (eigentlich Sockets) suchst, die offen für neue Verbindungen sind. (Nebenbei: bei mir bei verbundenen Sockets ESTABLISHED steht und kein CONNECTED.)

Benutzeravatar
Noar
Beiträge: 27
Registriert: 25.09.2007 23:30:52
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Prüfen ob Port offen ist

Beitrag von Noar » 08.09.2009 14:00:42

Hi nepos,

danke.
Die Option "-4tnl " mag mein netstat nicht.

Zum Thema grep: wenn ich nach dem Port grabbe, dann erhalte ich ja die ganze Zeile.
Kann ich das noch irgendwie so ketten, das noch in der Zeile nach dem CONNECTED (bzw. ESTABLISHED) gesucht wird?

Gruß
Thomas
-- GNU/Linux (Debian unstable) --
--- It is only in our decisions that we are important. Jean-Paul Sartre ---

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: Prüfen ob Port offen ist

Beitrag von nepos » 08.09.2009 15:00:13

Noar hat geschrieben:Hi nepos,

danke.
Die Option "-4tnl " mag mein netstat nicht.
Was für ein System hast du denn dann? Mein Lenny netstat kann das so, wie ichs geschrieben habe.
Zum Thema grep: wenn ich nach dem Port grabbe, dann erhalte ich ja die ganze Zeile.
Kann ich das noch irgendwie so ketten, das noch in der Zeile nach dem CONNECTED (bzw. ESTABLISHED) gesucht wird?
Jo klar, so z.B.:

Code: Alles auswählen

netstat -4tnl | grep ":22 .* LISTEN"

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Prüfen ob Port offen ist

Beitrag von rendegast » 08.09.2009 16:17:12

Noch eine Portausgabe:

Code: Alles auswählen

lsof -i -n -P
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Noar
Beiträge: 27
Registriert: 25.09.2007 23:30:52
Lizenz eigener Beiträge: GNU Free Documentation License

Re: [gelöst] Prüfen ob Port offen ist

Beitrag von Noar » 17.09.2009 19:44:21

Danke an alle.

Mit eurer Hilfe läuft das Skript nun fleißig und prüft einmal stündlich ein paar Ports und Prozesse.

Für die Ports hab ich den Tip von nepos verwendet.

Code: Alles auswählen

netstat -4tnl | grep ":22 .* LISTEN"
Lustigerweise kannte meine Suse die Option -4tnl nicht.
Auf dem Debianrechner gibg es aber doch.

Gruß
Thomas
-- GNU/Linux (Debian unstable) --
--- It is only in our decisions that we are important. Jean-Paul Sartre ---

Antworten