Ist es möglich, die Einrichtung eines gemeinsam genutzten Hosts mit einem Bash-Shell-Skript zu automatisieren?

Ist es möglich, die Einrichtung eines gemeinsam genutzten Hosts mit einem Bash-Shell-Skript zu automatisieren?

Präambel: Ich habe noch nie ein Shell-Bash-Skript erstellt. Daher bin ich mir zunächst einmal nicht sicher, ob dies das richtige Tool für diese Aufgabe ist. Wenn nicht, lassen Sie mich bitte vor allem wissen, was Ihrer Meinung nach die beste Alternative ist.

Kontext: Beim Einrichten einer Website erledige ich häufig wiederkehrende Aufgaben. Ich möchte diese Aufgaben automatisieren, indem ich ein oder zwei Befehle ausführe. UPDATE: Der gemeinsam genutzte Host ist Unix-basiert. Die lokalen Rechner sind Mac OS X und daher ebenfalls Unix-basiert.

Hier sind als Beispiel einige der Aufgaben (Befehle), die ich häufig ausführe:

SCP:

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

SSH direkt:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

BEARBEITEN, SUCHEN, ERSETZEN, SPEICHERN UND BEENDEN:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

Soweit ich weiß: Das sind die verschiedenen Aufgaben, die das Skript meiner Meinung nach ausführen soll.

Frage 1: Können Bash-Skripte SCP, SSH und BEARBEITEN, SUCHEN, ERSETZEN, SPEICHERN UND BEENDEN direkt verarbeiten?

Frage 2: Der Benutzer, der das Skript ausführt, sollte nach einigen Parametern gefragt werden. Diese Parameter sollten in einigen Dateien abgelegt werden (wobei bestimmte vorhandene Schlüsselwörter ersetzt werden). Ist dies möglich?

Frage 3: Sollen wir die Dateien auf die Remote-Remote kopieren und direkt auf der Remote-Remote bearbeiten oder sollen wir die Dateien lokal abrufen, „sie lokal an einem temporären Ort bearbeiten“ und sie dann auf dem Server ablegen? Ich nehme an, die zweite Möglichkeit ist viel komplizierter.

Gibt es Beispiele, die ich mir ansehen kann?

vielen Dank im Voraus

Antwort1

Die kurze Antwort lautet: Ja zu allen.

Ich werde Ihnen einige Beispiele geben. Das Folgende ist ein Beispiel für einen Befehl, der ein lokales Bash-Skript auf einem Remotecomputer ausführt. Bitte beachten Sie, dass es nicht notwendig ist, es remote zu kopieren:

   ssh user@remote_pc 'bash -s' < local_file.sh

Dies ist so einfach, dass es sich möglicherweise nicht lohnt, ein ganzes Skript dafür zu schreiben, aber falls Sie dies wünschen, können Sie es auch über ein Skript einrichten. Damit dies funktioniert, müssen Sie jedoch passwordless loginSSH-Verbindungen einrichten. Wenn Sie dies nicht tun, werden die SSH/SCP-Befehle im Skript angehalten, während sie darauf warten, dass Sie das Kennwort des Remote-Benutzers eingeben.

Was das Bearbeiten usw. betrifft, so verfügt Unix über den ultimativen Stream-Editor sed, der genau dies tut: Beispielsweise der Befehl

 sed 's/a/A/g' old_file.txt > new_file.txt

ersetzt Kleinbuchstaben adurch Großbuchstaben Aund platziert die Ausgabe in einer neuen Datei. Auch dies lässt sich leicht per Skript steuern.

Was die Parameter betrifft, können Shell-Skripte Parameter aus einer Datei lesen oder die Umgebung nach einigen Parametern abfragen. Es ist nicht nötig, einen Benutzer nach seinem Anmeldenamen zu fragen,

  echo $USER
  whoami

erledigt dies, sogar innerhalb des Skripts. Dasselbe gilt für eine Privatadresse echo $HOMEusw.

Was Ihre dritte Frage betrifft, hoffe ich, dass meine erste Antwort auch darauf eine Antwort gegeben hat: Der erste Befehl ermöglicht es Ihnen, eine Skriptdatei, die Sie lokal bearbeitet haben, auf einem Remote-Server auszuführen, ohne sie dorthin kopieren zu müssen.

Willkommen in der Welt von *Nix, wodein Wunsch ist mir Befehl.

Entschuldigung, ich habe vergessen: diesen Befehl

  export -p | more

werden alle lokalen Variablen angezeigt, die überall verfügbar sind (technisch gesehen, die exportiert).

verwandte Informationen