2013-01-14 6 views
10

Sto tentando di eseguire uno script su un host remoto utilizzando una sessione schermata indipendente. Ho provato lo example Fabric gives e sfortunatamente non sono riuscito a farlo funzionare.Impossibile far funzionare l'esempio di sessione schermata indipendente di Fabric

from fabric.api import run 

def yes(): 
    run('screen -d -m "yes"') 

Esecuzione fab yes sulla mia macchina locale collega correttamente all'host remoto e dice il comando è stato eseguito, ma nulla viene eseguito sulla macchina remota. Provare screen -d -m "yes" su entrambe le macchine funziona come previsto.

Se qualcuno sapesse cosa sto facendo male, lo apprezzerei molto. Inoltre, su una nota a margine, perché ci sono citazioni intorno al sì nel comando? Funzionerebbe senza le virgolette? Grazie!

risposta

14

run('screen -d -m yes; sleep 1') opere.

Non sono sicuro se Fabric o lo schermo siano la causa di questo comportamento.

4

Anche se la risposta AVB è perfetta, aggiungerò un piccolo suggerimento che può aiutare qualcuno come me. Se si desidera eseguire più di un comando, inserirli in un file eseguibile.

Questo non funziona:

run('screen -d -m "./ENV/bin/activate; python run.py; sleep 1"')

Quindi creare un file run.sh:

#!/bin/bash 
source ENV/bin/activate 
python run.py 

e usarlo come run('screen -d -m ./run.sh; sleep 1')

+6

perché è il "sonno 1;" Là? – arikg