Ich konnte keine Frage finden, die dieses spezielle Szenario beschreibt.
Ich versuche, ein sehr einfaches Bash-Skript auszuführen, um die Protokollierung von mehreren Computern abzurufen. Ich führe das Skript lokal aus, muss aber über ssh auf einen externen Computer zugreifen und sudo einmal auf diesem Computer in einen privilegierten Benutzer einbinden ...
ssh myuser@machine.net
sudo su - privledged_user
cat logs > file.txt
Wenn Sie dies mit sh-x ausführen, bleibt Bash in der 'ssh'-Zeile stecken. Also habe ich versucht, es dahingehend zu überarbeiten:
ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt
Dies scheint auch auf unbestimmte Zeit zu blockieren. Gibt es eine bessere Lösung für dieses Problem? Ich sehe keinen Weg, um sudo su zu verwenden, soweit ich das beurteilen kann ...
Vielen Dank für jede Hilfe!
Antworten:
Die Art und Weise, wie ich dies in meiner aktuellen Umgebung erreiche, besteht darin, ssh mit dem
-t
Flag auszuführen, das die tty-Zuweisung erzwingt, und dann sudo -u root darin wie folgt auszuführen:Ich habe mein Konto in sudoers auf der Remote-Seite, so dass kein Passwort erforderlich ist.
Dieses Beispiel zeigt Ihnen verschiedene Möglichkeiten, dies innerhalb einer einzelnen SSH-Sitzung zu tun, einschließlich der Ausführung mehrerer Befehle mit Bash oder innerhalb einer Subshell. Beachten Sie auch, dass Sie, wenn Sie den obigen Code in ein ausführbares Skript einfügen, Befehlszeilenargumente ($ 1 und $ 2) an ssh übergeben können. Diese werden erweitert und dann auf der Remote-Seite referenziert.
quelle
Wenn Sie nicht möchten oder nicht verhindern können, dass sudo Sie nach dem Passwort fragt, besteht ein einfacher Trick darin, es lokal zu lesen und in einer lokalen Variablen zu speichern:
quelle
Wenn sudo so konfiguriert ist, dass kennwortlose Befehle zulässig sind, sollte dies das tun, was Sie wollen:
oder
Dies hängt davon ab, ob die
file.txt
Datei lokal oder remote erstellt werden soll.Andernfalls können Sie das Kennwort des Remotebenutzers folgendermaßen übergeben
sudo
:quelle