So automatisieren Sie die Eingabe für ein sich wiederholendes Skript! Erwarten Sie in Bash?

So automatisieren Sie die Eingabe für ein sich wiederholendes Skript! Erwarten Sie in Bash?

Ich bin Junior-Systemadministrator. Der Grund, warum ich diese Frage stelle, ist, dass wir hier keinen erfahrenen Systemadministrator haben, der sich mit Skripten auskennt. Erfahrene Leute sind in der Zentrale und für so etwas zu beschäftigt.

Mein Szenario ist folgendes. Ich muss drei Skripte häufig ausführen, um eine Anwendung bereitzustellen. Die Skripte wurden von einem erfahrenen Systemadministrator erstellt. Normalerweise läuft alles reibungslos und es treten keine Fehler auf. Aber ich muss sie beaufsichtigen, um Input zu erhalten. :(

In Teilen dieser Skripte muss ich manchmal „Ja“ oder „Nein“ eingeben. Meine Antworten ändern sich nie, es sei denn, der vorherige Teil schlägt fehl. Dann wähle ich „Nein“ und es heißt „Build fehlgeschlagen“.

Im Wesentlichen betreibe ich folgende Teile:

1 - SSH in einen Bereitstellungsserver

2 - Bearbeiten Sie eine kleine Zeichenfolge in einer Datei (die serverspezifische Informationen angibt)

3 - Führen Sie Skript A aus, das grundsätzlich alle Dateien von der Bereitstellung auf den Zielserver überträgt. Die einzige Eingabe, die ich hier machen muss, ist am Ende. Es fragt, ob das richtige Datum vom Ziel angezeigt wird. Wenn ich ja sage, ist der Build erfolgreich.

4 – Führen Sie Skript B auch vom Bereitstellungsserver aus aus. Dazu sind einige spezifische Informationen erforderlich, beispielsweise:

./scriptB XYZ, wobei sich X, Y, Z je nach Zielserverinformationen ändern.

Skript B enthält einige Fragen wie „Möchten Sie dies tun oder dies fallen lassen?“, die Antworten bleiben gleich. Außerdem gibt es manchmal einen ANT-Fehler, sodass ich „1“ drücken muss, bis das Skript fortgesetzt wird.

5 – Führen Sie Skript C aus, das Skript B sehr ähnlich ist. An einem Punkt steht jedoch die Ausführung eines bestimmten Schritts an, und ich muss zum Beenden manuell „Strg+C“ drücken.

Ich bin ein Neuling im Scripting, aber wenn mir jemand sagen oder eine Idee geben könnte, wie ich das machen könnte, wäre das großartig. Ich dachte, vielleicht könnte ich expect verwenden.

Noch besser wäre es, wenn ich einfach auf eine EXE-Datei auf meinem Windows-Laptop klicken könnte und alles erledigt wäre. Ist das überhaupt möglich?

Antwort1

Es klingt, als sollten Sie auf zwei Dinge achten:

  1. Bearbeiten Sie das alte Skript, um entweder einige der Prüfungen automatisch durchzuführen (z. B. die Zeitstempelprüfung) oder die Eingabeaufforderungen zu entfernen (nach readBefehlen zu suchen) und mit Standardwerten zu antworten.
  2. Mit einem genau für diese Aufgabe entwickelten Werkzeug, wieAnsible.

Wenn Sie etwas Neues lernen und Ihren Lebenslauf als Sysadmin verbessern möchten, würde ich mir die zweite Option ansehen, obwohl die erste kurzfristig auch gut funktionieren sollte!

Wenn Sie mit der ersten von mir erwähnten Option beginnen, versuchen Sie, Skript A so zu gestalten, dass keine Eingabeaufforderung erforderlich ist. Verwenden Sie beispielsweise die Funktion, um das aktuelle Datum abzurufen, und führen Sie die Prüfung automatisch durch. Wenn Sie ein Datum aus den gerade kopierten Dateien vergleichen, sollten Sie Tools wie oder dateverwenden können, um diese Informationen abzurufen.findls

Beim Ausführen von Skript C sollte es trivial sein, einen Befehl dort einzugeben exit, wo Sie normalerweise drücken würden CtrlC.

Über alles, denken Sie daran, dies auf nicht-kritischen Boxen zu testen! Sie möchten ja nicht das Produktions-Setup ruinieren, während Sie alte Skripte hacken ...

verwandte Informationen