[PYTHON] Conseils d'écriture sur tissu

Je veux courir localement

fabfile.py


from fabric.api import local
def test:
  local("ls")

Ligne de commande


$ fab test

Je veux l'exécuter pendant la connexion à un serveur distant quelque part

fabfile.py


from fabric.api import run
def test:
  run("ls")

Ligne de commande


$ fab -i ${key} -u ${user} -H ${host} test

Je veux passer une variable d'environnement de la commande d'exécution et l'exécuter

fabfile.py


from fabric.api import local
def test(value="hello"):
  local('echo %s' % value)

Ligne de commande


$ fab test
# hello

$ fab test:value=ok
# ok

Je veux l'exécuter dans l'état cd

fabfile.py


from fabric.api import cd, lcd, run
def test(value="hello"):
  #Pour les locaux
  with lcd("/var/tmp/"):
    local("pwd")

  #Pour la télécommande
  with cd("/var/www/"):
    run("pwd")

Ligne de commande


$ fab -i ${key} -u ${user} -H ${host} test
# /var/tmp/
# /var/www/

Je veux transférer un fichier

fabfile.py


from fabric.api import cd, put, run
def test():
  #Transfert SFTP
  put("~/local.txt", "/tmp/remote.txt")

  #Vérification
  with cd("/tmp"):
    run("ls")

Ligne de commande


$ fab -i ${key} -u ${user} -H ${host} test
# remote.txt

Je veux le mettre en veille au milieu du traitement

fabfile.py


import time
from fabric.api import local
def test():
  #Processus 1
  local('echo A')

  #Attendez 30 secondes
  time.sleep(30)

  #Processus 2
  local('echo B')

Je veux exécuter en parallèle

Motif 1 (ajoutez @ parallel au code)

fabfile.py


from fabric.api import parallel

@parallel
def test():
  #En traitement

Ligne de commande


$ fab -H "host1,host2,host3" test

Motif 2 (exécuter avec l'option -P)

Ligne de commande


$ fab -P -H "host1,host2,host3" test

Recommended Posts

Conseils d'écriture sur tissu
en tissu
astuces python
Le tour de Jupyter 4
astuces numpy
Astuce de Jupyter 5
Astuces Scapy
Astuce de Jupyter 3
Le tour de Jupyter 2
Astuces Python
Astuces Python
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python