2016-12-21 2 views
0

Ich versuche, Fabric zu verwenden, um einige grundlegende Befehle auf einem Remote-Server auszuführen. Ich habe Fabric vorher noch nicht benutzt und ich habe einige Schwierigkeiten, einige Befehle auszuführen.So führen Sie Befehle als root mit Fabric aus

Was ich tun muss, ist eine Verbindung mit dem Remote-Server, erstellen Sie eine Datei in einem bestimmten Verzeichnis und starten Sie den uwsgi-Server neu.

Obwohl ich in der Lage bin, die ersten beiden Aufgaben zu erledigen, kann ich den Dienst nicht neu starten, da ich SSH nicht als Root-Benutzer an den Server ssh.

Das ist, was ich tue:

def staging(): 
    env.hosts = ['[email protected]_host'] 

def update_app(app_name): 
    with cd(git_folder): 
    with settings(warn_only=True): 
     sudo('mkdir -p /home/new_folder/test') 
     #sudo('sudo su -') # also tried this 
     sudo('service uwsgi restart') 

Als ich schließen die sudo su - Befehl wird das fab Skript nie fertig. Ich werde nur als root angemeldet (im Terminal).

Antwort

1

Warum nicht einfach sudo service uwsgi restart? Es sollte funktionieren, vorausgesetzt, sudo ist configured to allow that ohne Aufforderung zur Eingabe eines Kennworts.

+0

Wenn ich das versuche, bekomme ich: root ist nicht in der Sudoers-Datei. Dieser Vorfall wird gemeldet. Warnung: sudo() hat während der Ausführung von 'mkdir -p/home/neuer_ordner/test; sudo service uwsgi restart' den Rückgabecode 1 ungleich Null zurückgegeben! – user1919

+1

Können Sie _manuell_sh auf den Zielhost stellen und sicherstellen, dass die Befehle, die Sie ausführen möchten, tatsächlich ausgeführt werden können? Auch wenn Sie als root bereits laufen (wie es scheint), brauchen Sie nicht "sudo"! Versuchen Sie es zu entfernen. – 9000

Verwandte Themen