2017-04-03 14 views
-1

Ich schreibe ein Skript, das sich über SSH in einen Remote-Knoten einloggt und nach einem Dienst sucht, indem er die Ausgabe von pgrep -a <service-name> speichert, in einer Variablen speichert und prüft, ob diese Variable UP oder ist nicht.Python - Überprüfen, ob die Variable leer ist

HOST="172.29.219.110" 
COMMAND="pgrep -a haproaxy" 
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
result = ssh.stdout.readlines() 
print (result) 
if result == "": 
    print ("The service is NOT running") 
else: 
    print ("The service is running") 

Wenn ich die oben laufe, wie es ist, erhalte ich die folgende Antwort:

[b'31318 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid\n', b'31319 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds\n', b'31320 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds\n'] 
The service is running 

Aber wenn ich pgrep einen falscher Service, die Antwort ist

[] 
The service is running 

Ive überprüfte der Remote-Server, der pgrep -a haaaaaaaaa nichts zurücksendet. Aber es scheint nicht als leere Variable in Python zu registrieren. Was mache ich falsch?

+4

Ergebnis ist eine Liste. Sie können nach einer leeren Liste suchen, wenn nicht: – chatton

+4

Verwenden Sie 'wenn nicht Ergebnis'. Oder 'if result == []' –

+1

'[]' ist einfach nicht das gleiche wie '' ''. – RemcoGerlich

Antwort

1

Sie setzen eine Liste mit einer leeren Zeichenfolge gleich. Deshalb schlägt dein Code fehl. Die richtige Antwort wäre:

if not result: 
    print("The service is not running")