2013-06-19 150 views
1

我查找了一個解決方案,但沒有看到與我的問題相同的解決方案。我使用運行命令結構來遠程運行主機名-i。所以這裏是我有:IF語句中的Python變量

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")) 

我只是試圖檢查,當運行nodetool命令時,當前服務器的IP地址是否顯示。不是如何做到這一點。我是python的新手。

於是,我就分配「IP」的變量,有哪些激勵問題的錯誤:

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

編輯:

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

我嘗試了一些東西,這似乎工作:

>>> 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