2017-02-09 7 views
0

Я использую Python 2.7 с Fabric в Mac OS X. Недавно я заметил, что мой скрипт неправильно сохраняет переменную nodename, когда у меня нет домашнего каталога на хозяин, в котором я SSH. Это связано с тем, что при входе в этот узел появляется ошибка, и она сохранит эту ошибку и запуск («anycommand») в эту переменную. Например, в следующей команде:Python: использование команды запуска Fabric для сохранения вывода в переменную

def saveHostname(): 
    with settings( 
     hide('running', 'warnings'), 
     shell='/bin/bash -c'): 

     date = run ('date') 
     host_type = run ('uname') 
     if "Linux" in host_type: 
      with hide('output'): 
       nodename = run('hostname -s') 
       print nodename 

Это сэкономит «NODENAME», как:

Could not chdir to home directory /home/yourdirectory/: No such file or directory (This is the error I get everytime I log into the machine) 

hostname (This is the hostname of the host I am logging into with Python) 

Есть в любом случае игнорировать ошибки и не сохранять их в переменную, используя команду Python запуска ?

ответ

0

Один из способов проигнорировать ошибку является проверить вывод запуска («имя хоста -s») перед сохранением в имя_узла

with hide('output'): 
    temp = run('hostname -s') 
    if "Could not chdir" not in temp: 
     nodename = temp 
     print nodename 
    else: 
     nodename = None 
+0

Но для хозяев, которые имеют эту ошибку, я бы до сих пор не в состоянии сохраните только имя узла и завершите мой сценарий для моих других функций. – user5578188

+0

Затем вам нужно исправить ошибку на главной машине, если вы хотите, чтобы фактическое имя хоста было успешно восстановлено. –

Смежные вопросы