Zugriff auf Port erzwingen

Heute saß ich am Problem mir (unter Linux) Zugang zu einem bestimmten Port zu erzwingen (in meinem Fall den Port 3333)

ich hab das so gelöst, dass ich die Anwendung abschieße, die an „meinem“ Port horcht:

String[] cmd = { "/bin/sh",
"-c", "kill `netstat -nlepu 2>/dev/null " +
"| awk '/[:]3333 / {split($8,t,\"/\"); print t[1]}'`" };
Process p = Runtime.getRuntime().exec(cmd);

um evtl. Fehler zu erkennen kann man die Ausgabe des Befehls auch noch auf stdout ausgeben:

String line;
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
System.out.println(line);
input.close();

Erklärung:

netstat -nlepu 2>/dev/null | awk '/[:]3333 / {split($8,t,\"/\"); print t[1]}'

gibt die PID (prozess id) der anwendung zurück, die an dem gewünschenten Port horch.

wobei awk benutzt wird um die ausgabe von netstat zu filtern.

„nlepu“ heißt

  • Rechnernamen nicht auflösen
  • Empfangsbereite Serversockets auflisten
  • Weitere/zusätzliche Informationen anzeigen
  • PID/Programmnamen für Sockets anzeigen
  • auf UDP-Port horchen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert