2013-01-14 12 views
10

Próbuję wykonać skrypt na zdalnym hoście za pomocą odłączonej sesji ekranu. Wypróbowałem numer example Fabric gives i niestety nie udało mi się go uruchomić.Nie można pobrać przykładu sesji odłączonego ekranu Fabric od pracy

from fabric.api import run 

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

Wykonywanie fab yes na moim komputerze lokalnym poprawnie łączy go do zdalnego hosta i mówi, że polecenie zostało uciekać, jednak nic nie jest wykonywane na zdalnym komputerze. Próbowanie screen -d -m "yes" na obu komputerach działa zgodnie z oczekiwaniami.

Jeśli ktoś mógłby wskazać, co robię źle, byłbym bardzo wdzięczny. Poza tym, na marginesie, dlaczego w poleceniu są cytaty na temat tak? Czy działałoby bez cytatów? Dzięki!

Odpowiedz

14

run('screen -d -m yes; sleep 1') działa.

Nie jestem pewien, czy przyczyną tego zachowania jest tkanina lub ekran.

4

Mimo że odpowiedź AVB jest idealna, dodam małą wskazówkę, która może pomóc komuś podobnemu do mnie. Jeśli chcesz uruchomić więcej niż jedno polecenie, umieść je w pliku wykonywalnym.

To nie zadziała:

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

więc utworzyć plik run.sh:

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

i używać go jak run('screen -d -m ./run.sh; sleep 1')

+6

dlaczego jest "sleep 1;" tam? – arikg

Powiązane problemy