Backup-Fehler /tmp/cgimail.nnn auf CCU3

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
mademyday
Beiträge: 279
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 44 Mal

Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von mademyday » 21.01.2023, 09:32

hi!

bei mir sammeln sich auf der CCU3 in /tmp lauter cgimail.nnn Dateien an:

Code: Alles auswählen

...
-rw-r--r--    1 root     root           597 Jan 11 03:33 cgimail.8831
-rw-r--r--    1 root     root           597 Jan 12 03:33 cgimail.32662
-rw-r--r--    1 root     root           597 Jan 13 03:33 cgimail.14443
...
Inhalt:

Code: Alles auswählen

# cat /tmp/cgimail.16580
Return-Path: <CGI script - do not reply>
From:  <CGI script - do not reply>
To: root
Subject:  CGI problem

CGI environment:
REQUEST_METHOD: GET
SCRIPT_NAME: /config/cp_security.cgi
HTTP_USER_AGENT: Wget/1.19.5 (linux-gnueabihf)
HTTP_HOST: 127.0.0.1
REMOTE_ADDR: 127.0.0.1
cgi.tcl version: 1.8.0
input:
sid=@XPeaQNngIJ@&action=create_backup
cookie:
errorInfo:
invalid command name ""
    while executing
"[create_backup]"
    (procedure "action_create_backup" line 2)
    invoked from within
"action_create_backup"
    invoked from within
"if {[session_requestisvalid 8] > 0} then action_$action"
Die Stammen vom nächtlichen Backup, für das ich ein Skript verwende
(auf meiner CCU2 läuft das seit Jahren genauso, nur ohne diese cgimail-Fehler-Dateien)

Wie muss der wget-Befehl heißen, damit das auf der CCU3 ohne diesen Fehler läuft? Derzeit:

Code: Alles auswählen

wget "http://$host/config/cp_security.cgi?sid=@$sessionid@&action=create_backup" -O $host-backup.tar.sbk
Nachvollziehen kann man das Skript (habe ich bewusst nicht hier gepostet, da da noch mehr passiert, wie zB Konsistenz-/Signatur-Check, Verschlüsseln, Upload, etc.) per shell wie folgt:

Code: Alles auswählen

host="127.0.0.1"
user="Admin"
### password="..."

# --- login: ---
loginresponse=$( wget --post-data '{"method":"Session.login","params":{"username":"'$user'","password":"'$password'"}}' http://$host/api/homematic.cgi -O - -q )
echo "$loginresponse"
# --> {"version": "1.1","result": "XPeaQNngIJ","error": null}

# --- get sessionid: ---
sessionid=`echo "$loginresponse" | cut -d "," -f2 | awk '{print $2}' | cut -d '"' -f2`
echo "$sessionid"
# --> XPeaQNngIJ

# --- create_backup: ---
wget "http://$host/config/cp_security.cgi?sid=@$sessionid@&action=create_backup" -O $host-backup.tar.sbk
--2023-01-21 08:52:26--  http://127.0.0.1/config/cp_security.cgi?sid=@XPeaQNngIJ@&action=create_backup
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6052266 (5.8M) [application/x-download]
Saving to: '127.0.0.1-backup.tar.sbk'

127.0.0.1-backup.tar.sbk                 100%[================================================================================>]   5.77M  2.39MB/s    in 2.4s

2023-01-21 08:52:36 (2.39 MB/s) - '127.0.0.1-backup.tar.sbk' saved [6052266/6052266]

# --- logout: ---
wget --post-data '{"method":"Session.logout","params":{"_session_id_":"'$sessionid'"}}' http://$host/api/homematic.cgi -O - -q
# --> {"version": "1.1","result": true,"error": null}

# tar -tvf 127.0.0.1-backup.tar.sbk
-rw-r--r-- root/root   6046075 2023-01-21 08:52 usr_local.tar.gz
-rw-r--r-- root/root        33 2023-01-21 08:52 signature
-rw-r--r-- root/root        15 2022-06-23 17:37 firmware_version
-rw-r--r-- root/root         2 2023-01-21 08:52 key_index

# ls -ltr /tmp/
...
-rw-r--r--    1 root     root             2 Jan 21 08:52 key_index
-rw-r--r--    1 root     root           597 Jan 21 08:52 cgimail.16580
drwxr-xr-x    2 root     root            80 Jan 21 08:52 event

# cat /tmp/key_index
0

# cat /tmp/cgimail.16580
Return-Path: <CGI script - do not reply>
From:  <CGI script - do not reply>
To: root
Subject:  CGI problem

CGI environment:
REQUEST_METHOD: GET
SCRIPT_NAME: /config/cp_security.cgi
HTTP_USER_AGENT: Wget/1.19.5 (linux-gnueabihf)
HTTP_HOST: 127.0.0.1
REMOTE_ADDR: 127.0.0.1
cgi.tcl version: 1.8.0
input:
sid=@XPeaQNngIJ@&action=create_backup
cookie:
errorInfo:
invalid command name ""
    while executing
"[create_backup]"
    (procedure "action_create_backup" line 2)
    invoked from within
"action_create_backup"
    invoked from within
"if {[session_requestisvalid 8] > 0} then action_$action"

# ls -l /tmp/event/
total 4
-rw-r--r--    1 root     root             0 Jan 21 09:01 0za6wDcgJa
-rw-r--r--    1 root     root            26 Jan 21 08:24 subscriber.list

# cat /tmp/event/subscriber.list
0za6wDcgJa {EVENT_COUNT 1}

Benutzeravatar
jmaus
Beiträge: 9914
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 466 Mal
Danksagung erhalten: 1902 Mal
Kontaktdaten:

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von jmaus » 21.01.2023, 09:47

Na du gehst ja hier IMHO auch ziemlich mit der Brechstange vor. Die gabzen cgi skripts sind nicht dafür gemacht das du die irgendwie von aussen versuchst von einem anderen system aus aufzurufen. Das ist nicht im Sinne des Erfinders. Auch halt ich es für keine gute idee solche (und viele andere dinge auch) von aussen irgendwie antriggern zu wollen.

Gerade für das regelmäßige Erstellen von Backups, etc. Gibt es bereits existierende Lösungen. So bei RaspberryMatic z.b. umfangreiche Skripte die direkt auf der Zentrale laufen und dir das backup in beliebige Pfade nachts irgendwo hinlegen und im Falle einer vanilla CCU mit originaler CCU3 Firmware gibt es z.b. ein Backupskript in CUxD das dir auch sbk Dateien generiert. Oder aber du baust dir selbst ein skript den du via cronjob direkt auf der Zentrale ausführen lässt. Aber jetzt hinzugehen und zu versuchen via remote aufruf rein intern zu verwendenter cgi-Skripte wie cp_security halte ich für kein gutes bzw nachhaltiges Vorgehen. Da sind keine public APIs.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

mademyday
Beiträge: 279
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 44 Mal

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von mademyday » 21.01.2023, 10:02

ich habe mich vielleicht nicht verständlich ausgedrückt
jmaus hat geschrieben:
21.01.2023, 09:47
Oder aber du baust dir selbst ein skript den du via cronjob direkt auf der Zentrale ausführen lässt.
genau das mache ich doch, die cmds die ich oben manuell an der Shell demonstriert habe sind genau aus diesem lokal, direkt auf der ccu3 crontab-getriggert laufenden Skript; da findet nichts "von aussen"/"remote" statt

mademyday
Beiträge: 279
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 44 Mal

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von mademyday » 21.01.2023, 10:08

BTW: gerade festgestellt, wenn ich per WebUI/Systemsteuerung/Sicherheit ein Backup erstelle, erscheinen/verbleiben die gleichen Datei(-Leichen) im /tmp:

Code: Alles auswählen

-rw-r--r--    1 root     root             2 Jan 21 10:05 key_index
-rw-r--r--    1 root     root           652 Jan 21 10:05 cgimail.2603
drwxr-xr-x    2 root     root            80 Jan 21 10:07 event
Unterschiede in den cgimail-Dateien (.4325=webUI, .19799=shell/script) sind nur die IPs und UserAgents:

Code: Alles auswählen

[10:11] /usr/local/etc/config/addons/ste/backup-ccu # diff /tmp/cgimail.4352 /tmp/cgimail.19799
--- /tmp/cgimail.4352
+++ /tmp/cgimail.19799
@@ -6,12 +6,12 @@
 CGI environment:
 REQUEST_METHOD: GET
 SCRIPT_NAME: /config/cp_security.cgi
-HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
-HTTP_HOST: 172.20.1.30
-REMOTE_ADDR: 172.20.1.26
+HTTP_USER_AGENT: Wget/1.19.5 (linux-gnueabihf)
+HTTP_HOST: 127.0.0.1
+REMOTE_ADDR: 127.0.0.1
 cgi.tcl version: 1.8.0
 input:
-sid=@0za6wDcgJa@&action=create_backup
+sid=@Iw68lsy2dC@&action=create_backup
 cookie:
 errorInfo:
 invalid command name ""

Benutzeravatar
jmaus
Beiträge: 9914
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 466 Mal
Danksagung erhalten: 1902 Mal
Kontaktdaten:

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von jmaus » 21.01.2023, 10:21

mademyday hat geschrieben:
21.01.2023, 10:02
ich habe mich vielleicht nicht verständlich ausgedrückt
jmaus hat geschrieben:
21.01.2023, 09:47
Oder aber du baust dir selbst ein skript den du via cronjob direkt auf der Zentrale ausführen lässt.
genau das mache ich doch, die cmds die ich oben manuell an der Shell demonstriert habe sind genau aus diesem lokal, direkt auf der ccu3 crontab-getriggert laufenden Skript; da findet nichts "von aussen"/"remote" statt
Na wenn das ohnehin so ist brauchst du doch cp_security gar nicht um lokal ein sbk Backup erstellen zu lassen. Kommt nur drauf an wie du jetzt CCU technisch unterwegs bist. Nutzt du eine CCU mit original eQ3 CCU3 Firmware dann kannst du backupskript von CUxD nutzen. Bist du allerdings mit RaspberryMatic unterwegs steht die ein großes Sammelsurium an fertigen Backuplösungen und Skripten zur Verfügung (siehe https://github.com/jens-maus/RaspberryM ... ozeile-ssh) und wenn du unbedingt das sbk selbst erstellen willst dann wäre da der Skript "createBackup.sh" das richtige.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

mademyday
Beiträge: 279
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 44 Mal

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von mademyday » 21.01.2023, 10:53

ich habe eine original CCU3 im Einsatz und wollte gerne auch das Original-Prozedere zur Backup-Erstellung verwenden
- und wie oben ergänzt, tritt dieses cp_security.cgi/cgimail.nnn-Thema auch auf, wenn ich WebUI-geführt ein Backup erstelle?!

BTW: wenn ich das richtig sehe, ist das backup-Skript aus cuxd dieses? "cuxd_2.10.1_ccu3.tar\cuxd\extra\ccu_backup"
da passiert aber doch genau das was ich nicht möchte: Selbst Zusammenbauen des Archivs?

Code: Alles auswählen

...
puts "creating archive..."
exec tar czf /tmp/usr_local.tar.gz --exclude-tag=.nobackup usr/local
cd /tmp/
puts "sign configuration with current key..."
exec crypttool -s -t 1 <usr_local.tar.gz >signature
puts "store current key index..."
exec crypttool -g -t 1 >key_index
puts "copy firmware version..."
file copy -force /boot/VERSION firmware_version
puts "creating [set BACKUPDIR]/[set BACKUPFILE]"
exec tar cf [set BACKUPDIR]/[set BACKUPFILE] usr_local.tar.gz signature firmware_version key_index
puts "clean up temp files..."
exec rm -f usr_local.tar.gz signature firmware_version key_index

Benutzeravatar
jmaus
Beiträge: 9914
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 466 Mal
Danksagung erhalten: 1902 Mal
Kontaktdaten:

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von jmaus » 21.01.2023, 11:31

mademyday hat geschrieben:
21.01.2023, 10:53
ich habe eine original CCU3 im Einsatz und wollte gerne auch das Original-Prozedere zur Backup-Erstellung verwenden
- und wie oben ergänzt, tritt dieses cp_security.cgi/cgimail.nnn-Thema auch auf, wenn ich WebUI-geführt ein Backup erstelle?!
Na dann bist du ggf. auf einen Bug in der originalen CCU3 Firmware gestoßen oder irgendwas anderes passt nicht. Viel Erfolg das über den Hersteller reparieren zu lassen :mrgreen: Einfacher wäre du wechselst auf RaspberryMatic (ohne das ich Werbung dafür machen will) denn dieses ist nicht nur aktueller, sondern bringt auch mehr Tools für genau solche Power-User wie dich mit. Die originale CCU3 Firmware ist eher etwas für Anfänger bzw. als Start gut geeignet aber man kommt eben dann ab einem gewissen Punkt (siehe hier) an seine Grenzen und dann muss man andere Lösungen suchen/nutzen...
mademyday hat geschrieben:
21.01.2023, 10:53
BTW: wenn ich das richtig sehe, ist das backup-Skript aus cuxd dieses? "cuxd_2.10.1_ccu3.tar\cuxd\extra\ccu_backup"
da passiert aber doch genau das was ich nicht möchte: Selbst Zusammenbauen des Archivs?
Na nichts anderes macht die WebUI bzw. die CCU Weboberfläche selbst. Es bastelt auch das Archive selbst zusammen und nennt das dann *.sbk. Du kannst dir auch das "createBackup.sh" von RaspberryMatic einfach ausleihen (https://github.com/jens-maus/RaspberryM ... eBackup.sh) und auf deiner CCU3 Firmware unter /usr/local ablegen und nutzen. Sollte prinzipiell auch dort funktionieren und macht auch nur was die originale Firmware in der WebUI zu tut. Mehrere Wege führen eben nach Rom.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

mademyday
Beiträge: 279
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 44 Mal

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von mademyday » 22.01.2023, 08:07

jmaus hat geschrieben:
21.01.2023, 11:31
Na dann bist du ggf. auf einen Bug in der originalen CCU3 Firmware gestoßen oder irgendwas anderes passt nicht. Viel Erfolg das über den Hersteller reparieren zu lassen :mrgreen:
Kann das wer bestätigen? Backup via WebUI erstellen und im /tmp-Verzeichnis nachschauen ob da cgimail.nnn liegt?

wenn ich das (invalid command name "") hier sehe:

Code: Alles auswählen

errorInfo:
invalid command name ""
    while executing
"[create_backup]"
    (procedure "action_create_backup" line 2)
    invoked from within
"action_create_backup"
und in cp_security.cgi steht

Code: Alles auswählen

proc action_create_backup {} {
  [create_backup]
}
und da in der proc create_backup (in backup.tcl) keinerlei Ausgabe erzeugt wird, würde ich vermuten, dass die []-Klammern in cp_security.cgi um den proc-Aufruf von create_backup zuviel sind?!

Benutzeravatar
jmaus
Beiträge: 9914
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 466 Mal
Danksagung erhalten: 1902 Mal
Kontaktdaten:

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von jmaus » 22.01.2023, 08:24

mademyday hat geschrieben:
22.01.2023, 08:07
und in cp_security.cgi steht

Code: Alles auswählen

proc action_create_backup {} {
  [create_backup]
}
und da in der proc create_backup (in backup.tcl) keinerlei Ausgabe erzeugt wird, würde ich vermuten, dass die []-Klammern in cp_security.cgi um den proc-Aufruf von create_backup zuviel sind?!
Ach der alte Bug. Ja, die [] sind zuviel. Ist in RaspberryMatic korrigiert und in der CCU3 Firmware eben nicht. Entfern die Klammern und schon geht es… wie gesagt, bei RM schon lange beseitigt und warum das anscheinend nicht immer zu einem fehler führt kann ich dir leider nicht sagen..
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

ottomane
Beiträge: 21
Registriert: 23.03.2015, 17:05
Hat sich bedankt: 4 Mal

Re: Backup-Fehler /tmp/cgimail.nnn auf CCU3

Beitrag von ottomane » 02.03.2024, 20:18

Hallo zusammen,

wenn ich ein Backup im WebUI (CCU2, aktuelle FW) mache, wird eine Datei erzeugt, die mein Browser dann auch herunterlädt.

Allerdings habe ich auch unter /tmp diese Fehler, den ich zufällig fand. So fand ich dann diesen Thread hier :)

Code: Alles auswählen

invalid command name ""
    while executing
"[create_backup]"
    (procedure "action_create_backup" line 2)
    invoked from within
"action_create_backup"
    invoked from within
"if {[session_requestisvalid 8] > 0} then action_$action"
Ist mein Backup trotzdem in Ordnung? Oder soll ich die eckigen Klammern in cp_security.cgi entfernen?

Nachdem heute meine CCU2 größere Probleme machte, wäre ich mir gern sicher, dass ich funktionierende und vollständige Backups habe.

Danke und viele Grüße!

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“