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?
Ergebnis ist eine Liste. Sie können nach einer leeren Liste suchen, wenn nicht: – chatton
Verwenden Sie 'wenn nicht Ergebnis'. Oder 'if result == []' –
'[]' ist einfach nicht das gleiche wie '' ''. – RemcoGerlich