Gleichzeitige Plink-Instanzen / Sitzungen begrenzen?

1425
Ronan Thibaudau

Ich kontrolliere eine Menge Geräte, auf denen ich Batch-Befehle ausführen muss. Das funktioniert prima, aber wenn ich versuche, sie alle parallel auszuführen, bekomme ich plink-Netzwerkfehler.

Ich bin mir ziemlich sicher, dass das eigentliche Netzwerk gut läuft (es ist ein Gigabit-Netzwerk, das sich ausschließlich dem widmet. Nichts anderes läuft, es gibt 200 Geräte und das einzige, was gesendet wird, ist "sudo reboot"), so dass dies kaum Verkehr verursacht.

Gibt es irgendwelche Grenzen in Verbindung mit SSH oder Kitt, die ich kennen sollte? Ich würde gerne schneller gehen als sequenziell, aber es ist in Ordnung mit dem Ausführen von Batches von angemessener Größe. Ich würde nur die Batchgröße einstellen, die weiß, woher sie kommt, anstatt sie zufällig zu testen.

Zur Zeit mache ich das:

for / F% i in (MYHOSTLIST.txt) startet plink -pw MYPASSWORD MYLOGIN @% i Sudo-Neustart

Dies schlägt mit vielen Fehlern fehl, nachdem der erwartete 200 ish-Befehl Windows gestartet wurde. Das Entfernen des Starts funktioniert einwandfrei, erfordert jedoch einen Neustart der Geräte in Folge.

1
Eine Erklärung für das Downvote würde mir helfen, die Frage zu verbessern Ronan Thibaudau vor 8 Jahren 0
Dies würde helfen, Ihr Problem zu diagnostizieren: Windows-Version und Architektur, Putty-Version, Fehlerdetails. beatcracker vor 8 Jahren 0
@beatcracker Ich ging davon aus, dass es ein bekanntes Limit gab (und nicht spezifisch etwas zu diagnostizieren). Es ist unter Windows 8.1 X64, der neuesten Version von Putty, ich kann den Befehl momentan nicht erneut starten, um genaue Informationen zu den Fehlern zu erhalten. Es wurde jedoch eindeutig über die Verbindung geklagt. Da die Hardware bei weitem nicht beansprucht wurde, kam ich zu einem Software-Limit für gleichzeitige Verbindungen. Ronan Thibaudau vor 8 Jahren 0
Ich glaube nicht, dass es ein Verbindungslimit gibt und sowieso sind 200 gleichzeitige Verbindungen nichts, mit dem das Betriebssystem nicht umgehen kann. Meine Vermutung, dass es etwas mit `plink` selbst zu tun hat, oder mit dem, wie` cmd` es startet. Sie könnten versuchen, `plink` durch den ssh-Client von` cygwin` zu ersetzen und zu sehen, was passiert. beatcracker vor 8 Jahren 0
@beatcracker Ja, ich weiß, dass es keine Einschränkung des Betriebssystems ist. Ich frage mich, ob es sich um eine SSH-Beschränkung oder eine Kittbeschränkung handelt. In beiden Fällen schaue ich nicht nach Werkzeugwechseln oder nach einer Problemumgehung Erklären, woher die Einschränkung (Spezifikation oder Implementierung) kommt. Ich möchte wirklich nicht "Dinge ausprobieren", ich suche nach einer formalen Erklärung der Grenze. Ronan Thibaudau vor 8 Jahren 0
Welche Windows-Version verwenden Sie? Eine Serverversion von Windows ist weniger eingeschränkt. harrymc vor 8 Jahren 0
@ harrymc Wie bereits erwähnt, verwende ich nur Windows 3 X64. Ich bin mir ziemlich sicher, dass dies eine Kitt- und / oder SSH-Einschränkung ist und keine Windows-Einschränkung Ronan Thibaudau vor 8 Jahren 0
Warum bist du so sicher? harrymc vor 8 Jahren 0
@ harrymc Ich bin nicht "so sicher", also wenn Sie eine Antwort mit formalen Zahlen mit Fenstern haben, bin ich ganz Ohr. Wie ich im Kopfgeld sagte, suche ich nach einer formellen Antwort, die diese Zahlen als exakte Lumits erklären könnte. Ich möchte sie nicht "erraten". Wenn ich falsch liege und das Limit auf der Fensterseite liegt, ist es immer noch dasselbe, ich brauche noch eine Erklärung, um die maximale Anzahl herauszufinden Ronan Thibaudau vor 8 Jahren 0
Es gibt Zahlen, die dies erklären könnten, meistens eingebaute Grenzwerte, um die Ausbreitung von Viren in großen Netzwerken zu verlangsamen. Um zu überprüfen, ob Sie Zugriff auf einen physischen Computer mit Windows Server haben, versuchen Sie herauszufinden, ob Sie mehr als 200 Verbindungen erhalten (ich ziehe es vor, eine sinnvolle Antwort zu geben). harrymc vor 8 Jahren 0
@ harrymc nein ich habe keinen Zugang zu einem Windows Server in diesem Netzwerk. Wenn Sie sich auf die Lilien beziehen, die vorhanden waren, um die Verbreitung von Würmern zu verhindern, die vor langer Zeit angehoben wurden (vista, denke ich?)? Ronan Thibaudau vor 8 Jahren 0
Vor Vista konnten einige dieser Grenzwerte über die Registrierung geändert werden, jetzt sind sie jedoch integriert. Versuchen Sie, Linux zu booten. Wenn dies funktioniert, können Sie einen billigen Linux-Computer zum Senden des Neustarts verwenden. harrymc vor 8 Jahren 0
@ harrymc ist es nicht nur, reboots zu senden und ich brauche in diesem Fall Fenster. Wie gesagt, ich suche nicht nach einer Problemumgehung, ich möchte nur die genaue Anzahl herausfinden, die dokumentiert ist (NICHT durch Tests), und bei den Chargen dieser Anzahl bleiben Ronan Thibaudau vor 8 Jahren 0
Beim Testen unter Linux wird die These bestätigt, dass es sich um ein integriertes Windows-Limit handelt. Bitte tun Sie das. Wenn dies das Problem ist, sind diese Grenzwerte schlecht dokumentiert und unter Windows-Client-Versionen wahrscheinlich unzerbrechlich. Wenn dies nicht das Problem ist, hat es keinen Sinn, darüber weiter zu diskutieren. harrymc vor 8 Jahren 0
@ harrymc Ich habe keinen Zugriff auf ein Gerät unter Linux, auf dem ich das testen könnte, aber selbst wenn ich Kitt für Windows habe, ist es überhaupt nicht hilfreich zu wissen, ob es Kitt oder Fenster gibt, da Fenster für beide erforderlich ist Ronan Thibaudau vor 8 Jahren 0
Nach meinem neuesten Kommentar scheint es eine Putty-Version für Unix zu geben. Separater Quellendownload kann daher nicht die gleiche Codebasis sein. Auf jeden Fall kann ich das nicht von einer Linux-Maschine aus testen, es gibt nur eine Maschine, von der ich testen kann, und es ist ein Windows 8 x64 Ronan Thibaudau vor 8 Jahren 0
An Ihrer Stelle würde ich nicht nach einer genauen Obergrenze suchen, da sich dies ohne vorherige Ankündigung ändern kann. Stattdessen würde ich nach einer garantierten ** Untergrenze suchen, beispielsweise 100, und diese als Stapelgröße verwenden. Es ist empirisch und so weiter, aber es wird funktionieren. harrymc vor 8 Jahren 0
@ harrymc aber das ist nicht meine frage. Es ist offensichtlich, was ich bereits mache, aber ich möchte herausfinden, wo das Limit herkommt, warum es da ist und ob es in plink liegt, möglicherweise selbst zu beheben. Wie gesagt, ich brauche keinen Workaround, ich kann das alleine gut machen, ich möchte eine klare, formale, auf Zahlen basierende Erklärung Ronan Thibaudau vor 8 Jahren 0
Wenn dies eine Windows-Einschränkung ist, sind Ihre Chancen, dies herauszufinden, gering, während Sie plink und putty debuggen können. Ich habe nie plink verwendet, aber es ist ziemlich einfach, die Quellen der verwendeten Plink- und Putty-Versionen herunterzuladen und sie für die Konstanten 200, 199 und 201 zu grep. Das gibt an, ob das Limit dort liegt und fixierbar ist. harrymc vor 8 Jahren 0
@harrymc Windows-Grenzen sind gut dokumentiert, und Greping für diese Konstanten wird wahrscheinlich nicht helfen, da ich die ausführbare Datei 200 Mal starte und nicht 200 Verbindungen von derselben Verbindung aus versuche. Daher glaube ich nicht, dass es ein "hardcoded" Limit gibt meistens ein Nebeneffekt (vielleicht ein Eingangsportbereich oder etwas). Auf jeden Fall glaube ich nicht, dass es eine einfache Lösung gibt, außer auf jemanden zu warten, der das Problem bereits hatte oder an Puttys Quelle arbeitete, um eine Antwort zu finden. Ronan Thibaudau vor 8 Jahren 0
Warten ist nicht immer die beste Lösung. [Gott hilft denen, die sich selbst helfen] (https://en.wikipedia.org/wiki/God_helps_those_who_help_themselves). harrymc vor 8 Jahren 0
@harrymc Ich verstehe, dass du versuchst zu helfen, aber wirklich nichts davon hilft, ich scheine den Punkt nicht zu vermitteln, aber ich brauche keine Hilfe, um jedes Problem zu beheben. Alles, was ich habe, funktioniert gut. Es hat gut funktioniert, bevor ich gepostet habe. Ich suche nach einer formalen Erklärung. Ich war fertig damit, mir selbst zu helfen, noch bevor ich die Frage gepostet hatte. Ich frage, wie man PI berechnet, und du gibst mir immer wieder Tricks. Ich habe meinen Kreis bereits gemessen. Ich möchte immer noch wissen, ob es formell und wissenschaftlich ist, wie man PI berechnet, dasselbe hier. Ich habe Problemumgehungen. Ich suche eine formale Antwort. Ronan Thibaudau vor 8 Jahren 0
Während ein Beitrag in diesem Forum manchmal eine sofortige Antwort erhält, müssen das Plakat und die Antworter manchmal zusammenarbeiten, um das Problem zu lokalisieren, meistens, wenn es zu viele Möglichkeiten gibt. Ich habe oben erwähnt, dass ich einige Grenzen kenne, gegen die Sie stoßen könnten, und Ihre Zusammenarbeit wünschte. Aber Sie lehnten dies ab und warteten auf den seltenen Fall, dass jemand genau dasselbe tat und das Problem bereits analysiert und gelöst hatte. Schauen Sie, ich genieße das nicht, also beenden wir diese Diskussion. harrymc vor 8 Jahren 0
@ harrymc wo habe ich mich geweigert zu kooperieren? Ronan Thibaudau vor 8 Jahren 0

1 Antwort auf die Frage

1
Stefan Seidel

Wahrscheinlich das gleiche Problem, das hier beschrieben wurde (einschließlich der Lösung): https://stackoverflow.com/questions/17472389/wie-der-maximale-Anzahl-von-Kinderprozessen-, dass-kann-durch-gekommen ist -aw

Ich würde jedoch nicht empfehlen, so viele Prozesse zu spawnen, sondern die Parallelität zu den einzelnen Geräten zu verwenden

for /F %i in (MYHOSTLIST.txt) do plink -pw MYPASSWORD MYLOGIN@%i "nohup sudo reboot &>/dev/null &" 

Dadurch wird weiterhin eine serielle Verbindung zu allen Geräten hergestellt, jedoch nur um den Neustartbefehl zu starten und sofort die Verbindung zu trennen und zum nächsten Gerät überzugehen.

Eine andere Option wäre die Verwendung eines geeigneten Betriebssystems zur Steuerung dieser Linux- Geräte ;-)

Das hört sich überhaupt nicht nach meinem Problem an, es wird sogar ausdrücklich gesagt, dass das Problem nur Windows-Dienste in der Antwort betrifft. Die Verwendung von Linux zur Kontrolle ist in diesem Fall nicht möglich. Und der Neustart ist nur ein Beispiel für ein Skript, aber ich muss willkürliche Befehle für alle ausführen, einschließlich sequentieller Befehlssätze, in denen die Ausgabe angezeigt werden soll. Abgesehen davon, dass mit nohup auch noch die Zeit benötigt wird, um eine Verbindung zu ihnen herzustellen, anstatt zu tun es parallel. Spawning dass viele Prozesse in einem Nicht-Ausgabe-Bereich der Computer und OS gut damit umgehen Ronan Thibaudau vor 8 Jahren 0