Beispiel: Starten Sie Apache2
fabric.py
from fabric.api import env, sudo
def servers():
env.hosts = ["b13t.net"]
def startd():
sudo("service apache2 start")
Oder schreiben Sie in Shell
$ fab servers startd
Wenn Sie tun
[b13t.net] Executing task 'startd'
[b13t.net] sudo: service apache2 start
[b13t.net] out: * Starting web server apache2
[b13t.net] out: httpd (pid 20130618) already running
[b13t.net] out: ...done.
[b13t.net] out:
Done.
Disconnecting from b13t.net:65537... done.
Selbst wenn Sie tatsächlich mit ssh und ps ax eingeben, existiert apache2 nicht, und selbst wenn der Status des Dienstes apache2 als nicht ausgeführt bezeichnet wird, werden Sie die Verzweiflung dieser Welt erleben.
Wie können Sie die Verzweiflung loswerden?
python
def startd():
sudo("service apache2 start", pty=False)
Wenn Sie pty = False schreiben, werden Sie ohne Verzweiflung glücklich sein. Ich bin mir nicht sicher, weil ich kein Englisch lesen kann. http://stackoverflow.com/questions/6379484/fabric-appears-to-start-apache2-but-doesnt http://docs.fabfile.org/en/1.6/api/core/operations.html#fabric.operations.run Wenn Sie hier lesen, verliert das virtuelle Terminal, wenn pty = True, einige Informationen?
Wenn fabtools pip install ist und ein Benutzer mit ausreichenden Berechtigungen im Voraus in env.user angegeben wurde, wird anscheinend auch Folgendes gestartet. (Nicht überprüft)
python
from fabtools import service
def startd():
service.start("apache2")
Recommended Posts