PhUser
30. Oktober 2023 um 16:22
1
Hallo,
ich habe mehrere Linux Systeme die ich mit command_line abfrage um zu schauen ob Updates vorhanden sind. Das klappt auch ganz gut.
Nun habe ich noch einen command_line switch um die Linux Updates starten zu können.
- switch:
name: Starte Linux Update proxmox
command_on : "ssh -o LogLevel=QUIET root@pve.fritz.box -i /config/.ssh/id_rsa -o UserKnownHostsFile=/config/.ssh/known_hosts -t \"export DEBIAN_FRONTEND=noninteractive yes '' | apt-get -y -o DPkg::options::=\"--force-confdef\" -o DPkg::options::=\"--force-confold\" dist-upgrade | /bin/grep ^Inst | wc -l\""
command_off : ""
command_state: "ssh -o LogLevel=QUIET root@pve.fritz.box -i /config/.ssh/id_rsa -o UserKnownHostsFile=/config/.ssh/known_hosts -t \"result=$(apt-get -qq update && apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l); if [ $result -gt 0 ]; then echo 1; else echo 0; fi \""
command_timeout: 82800
scan_interval: 60
unique_id: command_line_start_pve_linux_update
Command_on klappt auch. Damit aber der Wechsel auf off klappt, habe ich command_state eingebaut. Die Abfrage bei command_state gibt 1 aus wenn Linux Update da sind. Wert <> 0 bedeutet, dass der Schalter auf Off gesetzt wird.
Leider klappt das nicht. Alle Switches sind auf On.
meowmoo
30. Oktober 2023 um 16:31
2
Ich glaube das die doppel " das Problem sind.
Versuch mal
"ssh -o LogLevel=QUIET root@pve.fritz.box -i /config/.ssh/id_rsa -o UserKnownHostsFile=/config/.ssh/known_hosts -t \'result=$(apt-get -qq update && apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l); if [ $result -gt 0 ]; then echo 1; else echo 0; fi \'"
PhUser
30. Oktober 2023 um 16:37
3
Dachte ich auch. Aber da kommt:
unknown escape sequence
Die Abfrage der Anzahl von Updates funktioniert ja. Dort ist auch \" drinnen.
PhUser
1. November 2023 um 13:39
4
Ich habe nun die Lösung gefunden. vor $ muss ein . Da das ganze per ssh geht.
Um das in der yaml richtig abzubilden muss das \ noch gecastet werden. Also aus $ wird \$ und sieht dann wie folgt aus:
- switch:
name: Starte Linux Update proxmox
command_on : "ssh -o LogLevel=QUIET root@pve.fritz.box -i /config/.ssh/id_rsa -o UserKnownHostsFile=/config/.ssh/known_hosts -t \"export DEBIAN_FRONTEND=noninteractive yes '' | apt-get -y -o DPkg::options::=\"--force-confdef\" -o DPkg::options::=\"--force-confold\" dist-upgrade | /bin/grep ^Inst | wc -l\""
command_off : ""
command_state: "ssh -o LogLevel=QUIET root@pve.fritz.box -i /config/.ssh/id_rsa -o UserKnownHostsFile=/config/.ssh/known_hosts -t \"result=\\$(apt-get -qq update && apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep ^Inst | wc -l); if [ \\$result -gt 0 ]; then echo 0; else echo 1; fi \""
command_timeout: 82800
value_template: >
{{ value == "1"}}
scan_interval: 60
unique_id: command_line_start_pve_linux_update