KiTTY (Fork of PuTTY) -Skript, das eine bestimmte PID automatisch abbricht
Neue Version
Also mache ich eine Liste der Dinge, die ich habe, um klarer zu sein.
- PC unter Windows 10, auf dem ein Plex-Medienserver und Kitty ausgeführt werden
- VPS von OVH läuft auf Debian 9-Strecke
was ich möchte :
- Ich möchte von überall aus dem lokalen Netzwerk auf meinen Server zugreifen
Wie :
- indem Sie die vps als Tunnel zu meinem Plex-Server verwenden
Problem :
- dynamischer ip Double Nat von isp-seitigem 4G / LTE-Router mit Abonnement
- Keine Portweiterleitung möglich
Problem :
- Wenn die ip "täglich" auf dem PC (Windows 10) wechselt, würde die Verbindung zum vps durch kitty abstürzen
Manuelle Lösung des Problems:
- Finden Sie die PID des Prozesses, der den Port offen hält, und beenden Sie ihn
was ich brauche :
- das automatisch machen oder eine andere Lösung für das Problem haben
Bilder zum besseren Verständnis
Nach der IP-Änderung im Protokoll von Kitty
Q & A
Pimp Juice IT : danke ^^ irgendwie erschien mir das no-ip-tool auch recht passend. Aber da die isp über doppeltes NAT verfügt, müsste ich auf ihrem zweiten "Router" hinter meinem ein No-ip soft laufen lassen. Welches ist unmöglich, würden Sie zustimmen ^^. Wirklich wie meine Ausgabe ist wirklich einfach, in der Tat aber ärgerlich, weil es so scheint, als sei der Ausweg einfach. Kann aber nicht den richtigen Weg finden: /
ps: yeah Keine Sorge, die alte Version ist ein großer Entwurf dessen, was ich wollte, dass es in der neuen Version ist. Sie haben alles, was Sie brauchen, um mir zu helfen, denke ich: / ^^
Old version
Ich habe einen VPS von OVH, mit dem ich meinen Medienserver auf PLEX von meinem PC zum VPS tunneln kann. Alles gut und funktioniert, außer…
Meine IP ist dynamisch und doppelt NAT-ed. Meine externe IP-Adresse ändert sich häufig und wird mindestens einmal täglich erneuert. Daher bricht meine Verbindung zur VPS durch Kitty (eine Gabel von PuTTY). Das habe ich mit automatischer Wiederverbindung nach einem Verbindungsabbruch behoben. Das Port-Tunneln, das ich in KiTTY angegeben habe, würde jedenfalls fehlschlagen, weil die vorherige Verbindung nicht ordnungsgemäß geschlossen wurde.
Für die Serverseite ist es Debian 9 Stretch.
Ich habe die Lösung gefunden: Ich finde die PID der Verbindung und bringe sie manuell ab . Da ist mein Problem, ich würde das gerne mit einem Skript automatisieren. Hier rufe ich um Ihre Hilfe, in der Hoffnung, dass jemand helfen kann.
Ps: Meine Fähigkeiten im Scripting sind so gering, wie es scheint, so klar wie möglich, danke.
Antworten auf einige Kommentare
Scott - Wenn sich meine IP-Adresse ändert, stürzt die Verbindung ab. Genau dann würde es dank KiTTY wieder hergestellt werden. Ich würde in die Kommandozeile einfach eintippen
netstat -lnp
, es würde mir die ganze Verbindung lebend zeigen. Ich würde den mit dem angegebenen Port (in diesem Fall32400
) und der damit verbundenen PID verknüpften finden, und dann den sehrPID
mittötenkill
. Letztes Mal war die PID12007
zum Beispiel.Kamil Maciorowski - Ich habe es versucht (unter Bezugnahme auf diese Antwort auf eine andere Frage ):
dauerhaft durch Bearbeiten der
/etc/sysctl.conf
Datei hinzufügen:net.ipv4.tcp_keepalive_time=300
und
Wenn Sie nur
sshd
auf dem Server rekonfigurieren können, ist dies meiner Meinung nach der eleganteste Weg. Lassen Sie diesshd_config
Zeilen enthalten wie:ClientAliveCountMax 3 ClientAliveInterval 15
aber keine davon funktioniert für mich, wenn ich einen Verbindungsabsturz simuliere, wird die Verbindung wiederhergestellt, und der Port ist noch belegt.
Auch die Lösung unter
Zurück zum Kunden
Es scheint, als würde ich nur für mich arbeiten, wenn ich es an meine Situation anpassen könnte.
"Aber keiner von beiden funktioniert für mich, wenn ich einen Absturz meiner Verbindung simuliere. Dadurch wird die Verbindung wiederhergestellt und der Port wäre noch belegt." - Haben Sie sshd neu gestartet? Haben Sie versucht, die Verbindung sofort wieder herzustellen? Mit diesen Einstellungen müssen Sie bis zu einer Minute warten, bis der Port frei wird. - Kamil Maciorowski
Ja, ich habe die SSHD mit dem folgenden Befehl neu gestartet:
/etc/init.d/ssh neu starten
und um sicher zu sein, weil ich nicht weiß, dass sshd neu gestartet wird
Dienst sshd neu starten
Die Wiederverbindung ist automatisiert und sofort. Ich suche jetzt nach einer Möglichkeit, diesen Prozess zu verzögern, wenn Sie wissen, wie es mir danken soll, damit Sie Folgendes wissen:
net.ipv4.tcp_keepalive_time=300
Ich setze auf 10 sek anstelle von 300 ist das noch in ordnung.
Ich habe auch nicht den zweiten Kommentar zum Laden von zwei Sitzungen erhalten, der mit der zweiten behoben wurde. Mein Ziel ist es, den eigentlichen Sitzungsprozess neu zu starten, der automatisiert ist. Jetzt muss der Port freigegeben werden, damit ich ihn wieder öffnen kann mit der neuen Anleihe.
Klarstellung: In meinem Kommentar oben gibt es eine generische Methode, um zu verhindern, dass man sich vom Server absperrt. Wenn Sie sshd_config stark genug gebrochen haben, können Sie ssh nicht erneut neu starten. Deshalb sollten Sie es immer mit einer neuen Verbindung testen, während Sie mit der alten immer noch Änderungen rückgängig machen können. Beachten Sie im Allgemeinen, dass es möglich ist, eine syntaktisch gültige sshd_config zu haben und trotzdem keine Verbindung herstellen zu können. Ein Neustart von sshd ohne Fehler bedeutet also nicht unbedingt, dass es funktionieren wird. - Kamil Maciorowski
Also am Ende, wie sollen meine Lösungen für diesen Prozess automatisiert und der Port nach kurzer Zeit freigegeben werden und wie kann die Wiederverbindung in kitty mit einem Skript oder etwas anderem verzögert werden? Nochmals vielen Dank für Ihre Zeit, die ich schätze
"Die Wiederverbindung ist automatisiert und sofort suche ich nach einer Möglichkeit, diesen Prozess zu verzögern" - Sie meinen, dass KiTTY versucht, die Verbindung ohne Verzögerung wiederherzustellen, oder? In Linux auf der Clientseite kann Ihr Problem leicht gelöst werden, indem Sie "autossh" oder "loop" von ssh -o ExitOnForwardFailure = yes ... verwenden (siehe diese Antwort). Ich denke, ssh unter Cygwin sollte diese Option unterstützen. Wenn Sie auf einem serverseitigen Skript bestehen, kann dies wohl getan werden. aber das Skript darf den Tunnel nicht beenden, wenn es nicht der alte Tunnel ist. Ich habe jetzt keine Zeit, eine derart umständliche Lösung anzubieten. vielleicht in 12 Stunden. - Kamil Maciorowski
Okay danke ich sehe dich sowieso in 12h bis dann werde ich alle anderen Lösungen ausprobieren Ich werde dich wissen lassen, wie es geht Danke nochmal.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem