用于检查Namenode状态的Python脚本

用于检查Namenode状态的Python脚本,python,hadoop,Python,Hadoop,我是Python新手,目前只通过在线研究学到了一些东西。我只是想知道为什么我的输出是“错误”而不是“成功”。请参阅下面的代码: #! /usr/bin/python -v import os import subprocess f = os.popen("hdfs haadmin -getServiceState nn2") now = f.read() status = "active" if now == status: print "success" else:

我是Python新手,目前只通过在线研究学到了一些东西。我只是想知道为什么我的输出是“错误”而不是“成功”。请参阅下面的代码:

#! /usr/bin/python -v

import os
import subprocess

f = os.popen("hdfs haadmin -getServiceState nn2")
now = f.read()
status = "active"
if now == status:
        print "success"
else:
        print 'error'
谢谢, Anil

(将评论移到回答)

无论何时从popen或任何地方提取文本,我都喜欢使用
.strip()
和通常使用
.lower()
来清除换行符和多余的空格

#! /usr/bin/python -v

import os
import subprocess

f = os.popen("hdfs haadmin -getServiceState nn2")
now = f.read().lower().strip()  # add strip here

if now == "active":
        print "success"
else:
        print 'error:', now  # why not print out what it output?

您是否可以执行
立即打印
而不是
打印“错误”
并让我们知道输出是什么?为了更安全,您可能应该执行
立即打印.strip()==状态
#/usr/bin/python-v import os f=os.popen(“hdfs haadmin-getServiceState nn2”)now=f.read()打印now status=“active”打印状态如果now==状态:打印“success”elif now>=状态:打印“elif success”其他:打印“error”我现在就试试。strip()=状态。谢谢你的回复,这很有效。谢谢你,先生。