2013-06-14 3 views
0

Я пробовал приведенный ниже код, это не была перезагрузка моего удаленного компьютера. Перезагрузка удаленной системы не работает?

for line in readips.readlines(): 
    line = line.strip() 
    print("The ip address is : ") + str(line) 
    rebootsys = "ssh [email protected]"+str(line) + " reboot" 
    print("The reboot system ip is:") + str(rebootsys) 
    if(os.system(rebootsys %locals())==0): 
     print("Done") 
    else: 
     print("Not able to reboot")

Успешно печатать IP-адрес при выполнении инструкции печати. Я запускался шаг за шагом, используя IDE крыла. Когда система начинает выполняться, если условие if(os.system(rebootsys %locals())==0 просто простаивает, оно не перейдет к следующему шагу, если он перезагрузится, тогда ему нужно переместить print("Done"), иначе ему придется переместить другую часть, но просто ждет самого условия if. Что делать
Мне нужно перезагрузить несколько систем ubuntu из моей системы ubuntu через скрипт python.

+0

вы пытались ввести эту команду? он настроен для аутентификации с сертификатом, чтобы вам не вводить пароль? – sje397

+0

Я уже создаю пароль меньше логина с помощью ssh-keygen -t dsa, а также я попробовал его вручную из команды, например, перезагрузить ssh [email protected] он был перезагружен. Но, выполнив его с помощью скрипта, это не сработает. Примечание. Мне нужно перезагрузить несколько систем. цикл for моего кода должен выполняться n раз. если он зависает на «if (os.system (rebootsys% locals()) == 0): line, я тоже не перезагружу оставшуюся систему. Помогите мне – Viswa

+1

Не думаю, что вам нужно'% locals() 'in там. – sje397

ответ

1

Я бы предложил переключиться на модуль subprocess и получить выход из запускаемой команды, а затем решить, что делать дальше с запущенным процессом. Скажем, использование system() в наши дни не считается хорошей практикой по многим причинам, от элегантности до безопасности.

Хороший пример, что вы действительно можете сделать с этим модулем в разделах 17.1.4.3. Replacing os.system() и 17.1.4.5. Replacing os.popen(), os.popen2(), os.popen3(). Поверьте мне, используя это, стоит инвестировать пару строк из большего количества кода :-)