2013-07-29 24 views
10

Sto installando i certificati su un server remoto e voglio verificare se sono presenti prima di sovrascriverli. Il server consente solo l'accesso non root tramite la chiave pubblica ssh. Posso sudo -s per eseguire il root una volta in una shell. Il root è richiesto perché/etc/ssl non è leggibile da nessun altro. Questo è stato sviluppato in python fabric, quindi qualsiasi comando che può essere eseguito in un comando di shell tramite sudo funzionerebbe. In questo caso, non mi interessa digitare le password ai prompt.Verifica se File/Dir esiste su SSH/Sudo in Python/Bash

TL; DR: Ho bisogno di un comando sh che può dire il mio programma python se esiste un file remoto (o directory) quando viene eseguito come if fabric.sudo(sh_command) == True: (o qualcosa di simile).

Grazie!

risposta

35
from fabric.contrib.files import exists 

def foo(): 
    if exists('/path/to/remote/file', use_sudo=True): 
     #command 
+0

Link doc: http://docs.fabfile.org/en/latest/api/contrib/ files.html? evidenziare = esiste # fabric.contrib.files.exists – ecstaticpeon

0

Eseguire un comando come test in Linux per determinare se esiste o meno una directory. L'output di fabric.sudo è una stringa multline, che può essere analizzata per lo stato di ritorno.

1

Forse non è il modo più semplice, ma dalla mia testa, vorrei suggerire

ssh [email protected] 'bash -c "if [ -e /path/to/remote/file ] ; then true ; fi"'