Ich frage mich, ob es eine Möglichkeit gibt, ein Skript / Befehle vom lokalen Computer auszuführen, ohne Änderungen als root auf dem Remotecomputer vorzunehmen.
Einige Hintergrundinformationen
Ich versuche, einige Aufgaben über Capistrano einzurichten, und benötige sudo
Zugriff. Es gibt mehr als 30 Server, und das manuelle Aktualisieren ist für mich /etc/sudoers
schmerzhaft. Ich habe mich gefragt, ob es eine Methode gibt, um diese Datei remote zu aktualisieren.
fabric.contrib.files.sed
Methode tun .Antworten:
Sie können lokale Skripte remote ausführen, indem Sie sie
bash
auf dem Remote-System ausführen und Ihrem Skript zuführen$ ssh user@host 'bash -s' < script.sh
Bearbeiten
Um Befehle auszuführen, die die Verwendung
sudo
auf einem Remotecomputer erfordern, verwenden Sie diessh's
-t
Option und übergeben Sie die Befehle anssh
. Die-t
Option weist eine Pseudo-Nummer zu und ermöglicht die Benutzerinteraktion mit den von ausgeführten Befehlenssh
, z. B. der Eingabe eines Kennworts fürsudo
Das Ändern einer Datei mit dieser Methode
sed
wird über eine Umleitung empfohlen,>
da die Shell-Umleitung das Schreiben von Dateien bei Verwendung nicht zulässtsudo
. Darüber hinaus müssen alle Variablen imsed
Befehl maskiert werden, wenn sie an übergeben werdenssh
.So automatisieren Sie das Ganze:
quelle
/etc/sudoers
Datei aufgrund von Root-Berechtigungen ändern möchte, schlägt dies fehl.sudo
Passworts auf, das nach/etc/sudoers
sudo
Rechte auf diesen Computern hat, müssen Sie sich zum Ändern/etc/sudoers
über ssh as anmelden , um Änderungen vorzunehmenroot
. Der Befehl wäre alsossh root@host -t 'sed -i "\$a text to insert" /path/to/file'
Ich fand den
tee
Befehl hilfreich, um die Sudo-Beschränkung bei der Dateiumleitung zu vermeiden. Die Verwendung von sed erwies sich aufgrund der Anforderungen an das Entkommen von Charakteren als frustrierend.Dies ist der Befehl, mit dem ich die Hosts für alle Computer in meinem Cluster remote an / etc / hosts angehängt habe:
Die Ausgabe für jede Iteration sieht folgendermaßen aus:
Diese SU-Antwort war ausschlaggebend für die Erstellung meiner endgültigen Lösung: https://superuser.com/a/1026359/587485
quelle
Wenn Sie mehrere Befehle oder Weiterleitungen ausführen müssen, sollten Sie die folgende Syntax verwenden:
quelle
Sie müssen bereits über eine Art Root-Zugriff verfügen, entweder über das direkte Root-Passwort oder über die Einrichtung der Sudo-Regel für Ihre Benutzer-ID, bevor Sie versuchen, die Sudoers-Datei zu ändern.
quelle