Exemple: démarrer Apache2
fabric.py
from fabric.api import env, sudo
def servers():
env.hosts = ["b13t.net"]
def startd():
sudo("service apache2 start")
Ou écrire, en coquille
$ fab servers startd
Si tu fais
[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.
Cependant, même si vous entrez réellement avec ssh et ps ax, apache2 n'existe pas, et même si l'état du service apache2 n'est pas en cours d'exécution, vous ferez l'expérience du désespoir de ce monde.
Alors, comment vous débarrasser du désespoir?
python
def startd():
sudo("service apache2 start", pty=False)
Si vous écrivez pty = False, vous serez heureux sans désespoir. Je ne suis pas sûr car je ne sais pas lire l'anglais, 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 Si vous lisez ici, est-ce que le terminal virtuel lorsque pty = True perd des informations?
Si fabtools est pip install et qu'un utilisateur avec des privilèges suffisants est spécifié à l'avance dans env.user, il semble que ce qui suit démarre également. (Non vérifié)
python
from fabtools import service
def startd():
service.start("apache2")
Recommended Posts