Aus irgendeinem Grund meine if condition
für eine Datei und ein Verzeichnis nicht vorhanden ist nicht korrekt verarbeitet. Das Skript denkt, dass die Datei und das Verzeichnis existieren, wenn sie nicht existieren.Bash-Skript überprüft nicht ordnungsgemäß, ob Verzeichnis und Datei existieren
#!/usr/bin/bash
lockdir=/opt/someOtherDis/qa_test_lock
puppetlock=/var/opt/puppetLockDirs/agent_catalog_run.lock
if [ ! -f "$puppetlock" ] && [ ! -d "$lockdir"]; then
#Get a url and grep it to get stuff
else
su -c "echo ls puppetlock results: $(ls -lrt $puppetlock) and qa lock results: $(ls -lrt $lockdir) >> /var/log/dirStuff/test-qa-run.log" -m "someUser"
su -c "echo $(date +\"%m-%d-%T\") Puppet or QA tests are running. Did not attempt to update artifact version. >> /var/log/dirStuff/test-qa-run.log" -m "someUser"
fi
Ich habe den Ausgang des ls
sicherzustellen, dass ich sehen kann, wenn Puppe oder die qa Sperre existiert.
Hier ist die Ausgabe der Protokolldatei, erste Überprüfung war, wenn ich Marionette manuell ausführen, damit ich sicherstellen konnte, dass die Dinge funktionierten.
02-09-08: 16: 01 Puppet- oder QA-Tests werden ausgeführt. Versuch nicht, Artefaktversion zu aktualisieren. ls puppetlock Ergebnisse: rw-r - r-- 1 root root 5 Feb 9 8.27 /var/opt/lib/pe-puppet/state/agent_catalog_run.lock und qa Verriegelungs Ergebnisse:
02 -09-08: 28: 01 Marionetten- oder QS-Tests laufen. Hat nicht versucht, die Artefaktversion zu aktualisieren.
02-09-08: 30: und qa Sperre Ergebnisse:
02-09-08: 30: 02 Puppet 02 app_versions.json wurde in den letzten 30 Minuten ls puppetlock Ergebnisse nicht geändert oder QA Tests laufen. Es wurde nicht versucht, die Artefaktversion zu aktualisieren. ls Puppetlock Ergebnisse: und qa Sperre Ergebnisse:
02-09-08: 32: 01 Puppet oder QA Tests laufen. Es wurde nicht versucht, die Artefaktversion zu aktualisieren.
Es sollte ein Leerzeichen zwischen '" $ Lockdir "' und ']', nein? – AlexP
@AlexP Sie haben Recht. Kein Wunder, dass ich es nicht sehen konnte. Problem ist behoben – wiredniko