Stellen Sie sicher, dass das .BAT-Skript über SSH / Telnet verfügbar ist

821
Manchineel

Bevor ich anfange, möchte ich sagen, dass das, was ich hier beschreibe, unter Verwendung von Consumer-Elektronik und Personalcomputern und nicht mit geeigneter Serverhardware erfolgt.

Mein Windows 10-Computer führt einen Minecraft Server im Eingabeaufforderungsfenster über ein Batch-Skript aus.

Ich starte das Batch-Skript, um den Server zu starten, und tippe dann stopin das Fenster, um Minecraft mitzuteilen, dass die Daten gespeichert werden sollen, und den Server sicher zu stoppen, was dazu führt, dass das Batch-Skript angehalten wird und das Fenster geschlossen wird.

Die anderen Administratoren und ich möchten diesen Server fernsteuern können, vorzugsweise über SSH oder Telnet, je nachdem, was einfacher einzurichten ist. Ich möchte den Admins 100% iges Vertrauen über den Minecraft Server (dh die Shell des Servers, während der Ausführung der bat-Datei) geben, aber nicht mehr als das. Ich möchte nicht, dass sie auf meinen Windows-PC-Befehl zugreifen dürfen. Leitung außerhalb der Batch-Shell, mit der sie wie zuvor beschrieben über SSH / Telnet interagieren dürfen.

Daher sollte eine Sitzung beispielsweise so aussehen:

## they connect > gamemode 0 someone [timeanddate] timeanddate [Server]: Set gamemode for player someone to survival > stop [timeanddate] timeanddate [Server]: Saving chunks... (et cetera) ## session ends, they get disconnected 

Dies bedeutet, dass sie nicht in der Lage sein sollten, auf die Windows-CMD zuzugreifen, außer für diesen bestimmten Prozess, wenn dieser vorhanden ist (manchmal ist der Server aus Gründen der Verwaltung ausgefallen).

Wäre es möglich, so etwas zu tun? Wenn ja, wie?

Ich bin okay mit der Installation jede Software so lange, wie es ist Open Source oder proprietär ist und stammt aus einer seriösen Quelle, mit der Registrierung thinkering, um das System zu modifizieren (es muss in der Lage sein, obwohl zu erhalten Windows - Updates), Erstellen von Benutzerkonten und wenn nötig mit einem Raspberry Pi. Ich habe eine statische IP-Adresse und volle Portweiterleitungsfunktionen an meinem Router.

1
Möglicherweise müssen Sie hier kreativ werden und den Batch einschränken und einen Selbsttest durchführen lassen, wenn er mit einer Schleife ausgeführt wird und alle paar Sekunden warten oder pausieren muss. Sie geben dann das SSH-Konto an, das den Zugriff authentifiziert, um nur eine Datei in demselben Ordner (Home-Ordner) und nur in diesem Ordner zu löschen oder zu erstellen. Sie haben dann einfach die Befehle, um die Datei zu löschen oder zu erstellen. Das Batch-Skript prüft jede Minute usw. und es existiert oder existiert nicht, stoppt oder startet daraufhin und hat die Möglichkeit, zu überprüfen, ob dies der Fall ist es läuft oder nicht extern von dem von einem anderen Rechner aus Pimp Juice IT vor 6 Jahren 0
Schauen Sie sich diesen Post an, wo diese Person die Batch-Skript-Logik basierend auf dem Zustand der vorhandenen oder nicht vorhandenen Datei kontrollierte. https://superuser.com/questions/1242506/trigger-an-action-on-a-windows-machine-von-an-android-phone-über das netzwerk/1243112#1243112. Sie würden offensichtlich eine einfache Schleifenüberprüfung in den Stapel einlegen, anstatt den Taskplaner zu verwenden. Es sei denn, Sie möchten den Taskplaner verwenden und ihn alle 1 Minute überprüfen lassen, usw. Pimp Juice IT vor 6 Jahren 0
@TheFurryITSnuggleBuddy aber wie sollte ich den Benutzer eine Verbindung zu SSH herstellen, dann sofort auf den Bildschirm des Prozesses zugreifen und sobald er / sie die Verbindung trennt oder der Prozess beendet ist, die Verbindung schließen, ohne dass sie die Maschine weiter steuern können? Und am wichtigsten ist, wie würden sie nach einer Verbindungsunterbrechung die Sitzung fortsetzen (in Linux hätte ich beispielsweise "screen" verwendet) Manchineel vor 6 Jahren 0
Ich habe keine Zeit, um etwas zu testen, um Ihnen mit 100% iger Sicherheit zu sagen, dass eine solche Lösung funktionieren würde oder nicht, aber ich habe dies nur als Beispiel für etwas zum Nachdenken, Spielen, Testen usw. gegeben, wenn Sie dies tun Zeit und denke, es lohnt sich. Ich nehme an, Sie sollten die Batch-Logik einsetzen, um die entsprechende Aktion auf der Basis einer Datei auszuführen oder die Sitzung zu starten. Vielleicht wäre es nicht 100% ig SSH oder sie müssten auf SSH 1-Verbindung zugreifen, um etwas mit der Datei zu tun, und dann eine SSH 2-Verbindung basierend auf dem, was Sie mit der Datei gemacht haben, usw. in SSH 1, um die andere herzustellen. Pimp Juice IT vor 6 Jahren 0
Werden Sie kreativ, wenn Sie Zeit haben, und testen Sie einige Ideen, aber Sie müssen wahrscheinlich einen anderen Prozess ausführen, der prüft, ob eine Sitzung hergestellt werden soll (Sie können eine Verbindung herstellen), eine Sitzung trennen usw., so dass Sie den Vorgang fortsetzen können. die Sitzung. Sie verwenden Windows 10 und Batch, sodass Sie möglicherweise den Task-Scheduler verwenden und alle 1 Minute, 5 Minuten usw. eine Überprüfung planen können, je nachdem, ob sich in einer Datei die Logik befindet. Ich bin sicher, ich könnte etwas zur Arbeit bekommen und eine solide Antwort aufschreiben, aber ich habe jetzt keine Zeit dafür. Pimp Juice IT vor 6 Jahren 0
Würde die Verwendung von Remote-Sitzungen von PowerShell helfen? @TheFurryITSnuggleBuddy Manchineel vor 6 Jahren 0
Es könnte sein, aber ich kann mich einfach nicht bestätigen, aber alles, worauf Sie sich einlassen, scheint mir zu passen, ich würde definitiv einen Versuch unternehmen, ein paar schnelle Tests durchzuführen. Ich bin mir nicht sicher, ob die Beschränkung des Terminalfensters auf ein Batch-Skript beschränkt ist oder was auch immer der knifflige Teil für mich ist, warum ich vorgeschlagen habe, kreativ zu denken oder einen anderen Prozess zu haben, der entweder den Start von START oder etwas zulässt STOPPEN und das Protokoll des Stapelterminals möglicherweise in einer Datei protokollieren, die andere Lesezugriff haben. Wahrscheinlich gibt es viele Möglichkeiten, um nur kurz voranzukommen. Pimp Juice IT vor 6 Jahren 0
Sie können ihnen zwar Lesezugriff auf ein Protokoll gewähren und nur in einem Ordner eine Datei löschen oder erstellen, aber möglicherweise erhalten Sie das erwartete Ergebnis in einer Art Problemumgehung. Ich denke vielleicht auch nach, was mich nicht überraschen würde. Wenn ich später in der Woche nach diesem riesigen Datenbankprojekt Zeit bekomme, kann ich feststellen, ob Sie bis dahin nichts haben. Wenn Sie irgendwelche Fortschritte machen, lassen Sie mich wissen, was Sie mit etwas bestimmt haben, ob es voll arbeitet, auf halbem Weg oder was auch immer. Pimp Juice IT vor 6 Jahren 1
@TheFurryITSnuggleBuddy vielen Dank. Ich werde mit PowerShell experimentieren Manchineel vor 6 Jahren 0
Irgendwelche Neuigkeiten zu Ihrer Lösung durch Zufall? Pimp Juice IT vor 6 Jahren 0
@ITSnuggles Entschuldigung, ich habe inzwischen einen Laufwerksausfall erlebt. Ich bin fast fertig mit der Wiederherstellung von Daten und Konfiguration Manchineel vor 6 Jahren 0

0 Antworten auf die Frage