Beenden Sie TCP-Verbindungen auf einem Mac im Terminal

9

Ich möchte nur eine bestimmte TCP-Verbindung auf meinem Mac beenden (ähnlich wie TCPKill unter Linux). Nach Port oder IP, vorzugsweise Port, aber ich werde mich niederlassen. Ich möchte nicht für einen Dienst bezahlen oder eine andere Software herunterladen, sondern den einfachen Terminalbefehl, mit dem ich dies wie tcpkill tun kann.

Ich habe versucht, die Regeln in meiner Firewall zu korrigieren, und versucht, ein Bash-Skript zu erstellen, damit es ausgeführt wird, aber ohne Erfolg, da das gefundene Tutorial sehr alt war.

Warum scheint es so schwierig zu sein, Informationen zu finden oder zu tun?

Aj Blank
quelle

Antworten:

5

Option 1

Sie können tcpkill installieren. Es ist Teil des dsniff-Pakets in MacPorts . Sie sagten, Sie möchten keine andere Software installieren. Trotzdem ist MacPorts wirklich nützlich, wenn Sie über die Befehlszeile arbeiten. Ich schlage vor, Sie überprüfen es aus.

Option 2

Auf StackOverflow gibt es einen verwandten Beitrag: Suchen (und Beenden) von Prozesssperrport 3000 auf dem Mac . Die dort vorgeschlagene Lösung besteht darin, eine Funktion zu erstellen, die alle Verbindungen an einem bestimmten Port beendet:

function killport() { lsof -i TCP:$1 | awk '/LISTEN/ {print $2}' | xargs kill -9 }

Wenn Sie die Funktion ändern, indem Sie das Argument entfernen, sollte die Funktion alle Anwendungen beenden, die eine offene TCP-Verbindung haben.

function killport() { lsof -i TCP | awk '/LISTEN/ {print $2}' | xargs kill -9 }

Haftungsausschluss: Ich habe dies nicht getestet.

Haftungsausschluss 2: Es handelt sich um eine Brute-Force-Methode, die einige schwerwiegende Nebenwirkungen haben kann. Ich würde gegen diesen Ansatz empfehlen.

Volsk
quelle
Ich habe hier einige OS X-Binärdateien für dsniff gefunden (falls Sie kein MacPorts-Benutzer sind): FWIW packages.macports.org/dsniff (anscheinend hat Homebrew ab heute kein Rezept mehr dafür)
rogerdpack
Es gibt ein Homebrew-Rezept dafür im homebrew/boneyardWasserhahn.
D_4_ni
Es gibt eine dsniff Gabel, die eine funktionierende tcpkillVersion enthält : github.com/ggreer/dsniff
Michael Böckling