2013-06-19 2 views
1

Я искал решение, но ни один из тех, что я видел, не отличается от моей проблемы. Я использую ткань с командой run для запуска имени хоста -i удаленно. Так вот, что у меня есть:Переменные Python в инструкции IF

ip = run("hostname -i") 
if %s in run("nodetool -h localhost ring | awk '{ print $1}' | grep `hostname -i`") % ip: 
     print(green("The host is in the ring")) 

Я просто пытаюсь проверить, если IP-адрес текущего сервера появляется при выполнении команды nodetool. Не так, как это сделать. Я новичок в python.

Так я пытался присвоить «IP» к переменной и была ошибка, которая стимулировало вопрос:

>>> ip = 10.0.0.1 
    File "<stdin>", line 1 
    ip = 10.0.0.1 
      ^
SyntaxError: invalid syntax 

EDIT:

I tried a few things and this seems to work: 

>>> ip = local("hostname -i") 
[localhost] local: hostname -i 
10.88.17.59 
>>> if ip > 1: 
...  print "yes" 
... else: 
...  print "no" 
... 
yes 
>>> if ip in local("hostname -i"): 
...  print "yes" 
... else: 
...  print "no" 
... 
[localhost] local: hostname -i 
10.88.17.59 
yes 
+1

Выполняет ли функция 'run()' вывод из команды? И вы ищете буквенную строку '% s' в этом выпуске? – jedwards

+0

Какая ваша ошибка? – Josh

+0

Спасибо за ответ. Я отключу подробный вывод. run() просто «запускает» команду удаленно в определенном списке серверов. Я догадывался о струнной части. Я думал о выполнении цикла for, но каждый сервер будет иметь другой IP-запрос. Итак, я застрял. – Kryten

ответ

-1

Я попробовал несколько вещей, и это, кажется, work:

>>> ip = local("hostname -i") 
[localhost] local: hostname -i 
10.1.2.3 
>>> if ip > 1: 
...  print "yes" 
... else: 
...  print "no" 
... 
yes 
>>> if ip in local("hostname -i"): 
...  print "yes" 
... else: 
...  print "no" 
... 
[localhost] local: hostname -i 
10.1.2.3 
yes 
+0

По крайней мере, скажите мне, почему бы вы ниспровергаете. Я думал, что помогу, опубликовав свое открытие. – Kryten

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