[gelöst] mcli ERROR: video data stream broken

  • EXEC1 netcvupdate -n -i fe80::208:54ff:fe54:b261 -d eth0.2 -U /tmp/netceiver.conf


    OK. Upload läuft und dann das bekannte:

    put: /netceiver.conf: Datei oder Verzeichnis nicht gefunden


    Wenn ich es in der Konsole mache, geht es auch schief, aber der Context scheint das User home zu sein:

    put: /root/netceiver.conf: Datei oder Verzeichnis nicht gefunden


    Nun fallen mir 2 mögl. Lösungen ein:


    1 zuerst ins tmp wechseln:

    cString c = cString::sprintf("cd /tmp; netcvupdate -n -i %s%s%s -U %s", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", "netceiver.conf");


    2 ich vermute den Fehler in ncvupdate:

    Als c Laie hab ich die Funktion aber in Summe noch nicht annähernd behirnt ;)


    Starten wir bitte mit Lösung 1

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

    3 Mal editiert, zuletzt von gggggg ()

  • cString c = cString::sprintf("cd /tmp; netcvupdate -n -i %s%s%s -U %s", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", "netceiver.conf");

  • wunderbar: EXEC1 cd /tmp; netcvupdate -n -i fe80::208:54ff:fe54:b261 -d eth0.2 -U netceiver.conf

    Upload done.


    und nun inkl. dem -K

    cString c = cString::sprintf("cd /tmp; netcvupdate -n -i %s%s%s -U %s -K", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", "netceiver.conf");

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

  • wunderbar: EXEC1 cd /tmp; netcvupdate -n -i fe80::208:54ff:fe54:b261 -d eth0.2 -U netceiver.conf

    Upload done.


    und nun inkl. dem -K

    cString c = cString::sprintf("cd /tmp; netcvupdate -n -i %s%s%s -U %s -K", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", "netceiver.conf");

  • Ja so ist Alles OK. Ich suche nun den Fehler im netcvupdate.c.


    Wärst du bereit dort ein paar Behebungsversuche zu machen ?


    Kannst du mich bitte aufklären woher netcvupdate die Variable optarg her bekommt ?

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

    Einmal editiert, zuletzt von gggggg ()

  • Zitat

    optarg her kommt ?

    habe ich mir noch nicht angeschaut ---> was ich nicht verstehe warum da was nicht stimmen sollte --> Befehle laufen doch alle


    Hier als Anlage noch die geänderte Datei für das Git

    Dateien

    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • Unsere Fehler meldung bei EXEC1 netcvupdate -n -i fe80::208:54ff:fe54:b261 -d eth0.2 -U /tmp/netceiver.conf

    war put: /netceiver.conf: Datei oder Verzeichnis nicht gefunden


    Ich vemute, folgenden Ablauf:

    cam.c:

    netcvupdate -n -i %s%s%s -U %s", uuid, -d , m_iface , "/tmp/netceiver.conf"


    netcvupdate.c:

    case 'U':

    ret=do_upload(uuids, num_uuids, device, optarg);


    int do_upload(char **uuids, int num_uuids, char *device, char *optarg)


    ret=do_single_upload(uuids[n], device, "/mmc/etc/", optarg, NC_CONFFILE)


    int do_single_upload( char *uuid, char *device, char *remote_path, char *fname, char *remote_file)

    {

    int ret;

    sprintf(script,

    "open %s%%%s\n"

    "user %s %s\n"

    "cd %s\n"

    "put %s %s\n"

    // "site exec killall -HUP mserv\n"

    "quit",

    uuid,device,username,password,remote_path,fname,remote_file);


    >>>> Aus "/tmp/netceiver.conf" wird "/netceiver.conf" und das steht in optarg


    Sag du mir bitte was da in c++ nun schief läuft ?!


    Daher auch die Frage woher optarg kommt ?!

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

    4 Mal editiert, zuletzt von gggggg ()

  • Hm,


    hier im Teste läuft alles


    Code
    root@BM2LTSnativeMC:/tmp# netcvupdate -n -q -d eth0.2 -A -D
    INFO  : enable options for FTP client 'lftp'
    INFO  : disable verbose mode
    UUID fe80::208:54ff:fe52:dace: Downloading netceiver.conf ... 
    Download done                                                  
    root@BM2LTSnativeMC:/tmp# netcvupdate -n -q -d eth0.2 -A -U netceiver.conf
    INFO  : enable options for FTP client 'lftp'
    INFO  : disable verbose mode
    UUID fe80::208:54ff:fe52:dace: Uploading netceiver.conf ... 
    Upload done

    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • Meine Vermutung ist wenn "/mmc/etc/" = remote_path ist müsste dieser doch "/tmp" sein

    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • Wir sollten das jetzt einmal der GIT Pflege über lassen, da sollte noch was für den -n Schalter in netcvupdate.c kommen

    (VDR) NUC11PAH & GEEKOM MINI-IT11-11. Generation * BM2LTS * DD NET S2 Max * NC * (Sound) Cinebar Lux Set * (Stream) Apple TV 4K (2022) *

    (Light) PHILIPS Hue Play HDMI Sync Box & Gradient Lightstrip * (OLED TV) LG OLED65G29LA

  • Ich würde mal sagen, dass der Befehl für lftp falsch ist:

    put [-E] [-a] [-c] [-e] [-P N] [-O base] lfile [-o rfile]

    Upload lfile with remote name rfile. If -o omitted, the base name of lfile is used as remote

    name. Does not expand wildcards, use mput for that.

    -o <rfile> specifies remote file name (default - basename of lfile)

    -c continue, reput. It requires permission to overwrite remote files

    -E delete source files after successful transfer (dangerous)

    -e delete target file before the transfer

    -a use ascii mode (binary is the default)

    -P N upload N files in parallel

    -O <base> specifies base directory or URL where files should be placed


    Wir machen in netcvupdate.c do_single_upload das: put %s %s\n = "put /tmp/netceiver.conf netceiver.conf\n"


    Nun ist mir auch klar warum er den FIle 2x hochlädt. Er interpretiert das put als 2 Files die hochzuladen sind.


    netcvupdate.c do_single_upload:

    cinfo Ev. geht das mit -o in Zeile

    338 put %s -o %s\n

    Das wird zu put /tmp/netceiver.conf -o netceiver.conf\n.

    UND das zurück ändern:

    cString c = cString::sprintf("cd /tmp; netcvupdate -n -i %s%s%s -U %s -K", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", "/tmp/netceiver.conf");

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

    8 Mal editiert, zuletzt von gggggg ()

  • cinfo Ich war mal mutig u hab lftp über die Konsole versucht ;)


    lftp root@fe80::208:54ff:fe54:b261%eth0.2:/mmc/etc> put /tmp/netceiver.conf -o netceiver.conf

    ---> EPSV

    <--- 229 Entering Passive Mode (|||1036|)

    ---- Verbinde Daten Socket mit (fe80::208:54ff:fe54:b261%eth0.2) Port 1036

    ---- Datenverbindung hergestellt

    ---> STOR netceiver.conf

    <--- 150 Opening BINARY mode data connection for 'netceiver.conf'.

    ---- Schließe den Daten Socket

    <--- 226 Transfer complete.


    Mit dem -o geht es tats. OK.


    >> Bitte um Variante 1 v. oben zum Testen:


    netcvupdate.c do_single_upload

    338 put %s -o %s\n


    cam_menu.c case 4 zurück auf Original plus -n

    176

    cString c = cString::sprintf("netcvupdate -n -i %s%s%s -U %s -K", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", TMP_FILE)

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

    3 Mal editiert, zuletzt von gggggg ()

  • ok

  • Danke, aber die Änderung beim put dürfte nicht angekommen sein - Test auf der Konsole:


    root@BM2LTSnativeMC:~# netcvupdate -n -e -d eth0.2 -i fe80::208:54ff:fe54:b261 -U /tmp/netceiver.conf -K

    INFO : enable options for FTP client 'lftp'

    DEBUG : enable debugging

    UUID fe80::208:54ff:fe54:b261: Uploading /tmp/netceiver.conf ...

    DEBUG : execute FTP command: lftp --norc -d

    DEBUG : execute FTP script

    ------

    open fe80::208:54ff:fe54:b261%eth0.2

    user root root

    cd /mmc/etc/

    put /tmp/netceiver.conf netceiver.conf


    1 Da fehlt das -o

    netcvupdate.c _____ do_single_upload

    338 put %s -o %s\n


    2 Bitte füge hier ein -e (debugging) und die Logausgabe ein

    cam_menu.c _____case 4___ zurück auf Original plus -n und -e (debug)

    176

    cString c = cString::sprintf("netcvupdate -n -e -i %s%s%s -U %s -K", uuid, m_iface ? " -d " : "", m_iface ? m_iface : "", TMP_FILE)

    isyslog("EXEC1 %s", (const char *)c);

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

  • zu 1.) da fehlt nichts und -e wurde ergänzt

  • Danke cinfo


    menu_cam.c:

    Feb 1 19:01:52 BM2LTSnativeMC vdr: [1974] EXEC1 rm -f /tmp/netceiver.conf; cd /tmp; netcvupdate -n -i -e fe80::208:54ff:fe54:b261 -d eth0.2 -D

    Feb 1 19:01:52 BM2LTSnativeMC vdr[1977]: INFO : enable options for FTP client 'lftp'

    Feb 1 19:01:52 BM2LTSnativeMC vdr[1977]: UUID -e: Downloading netceiver.conf ...

    Feb 1 19:01:52 BM2LTSnativeMC vdr[1979]: Unbekannter Befehl »%eth0.2«.


    Das -e muss vor dem -i (Case 2 u 4): -n -e -i


    netcvupdate.c _____ do_single_upload

    338 put %s -o %s\n


    Hast du eine Idee warum man das -o dann im Debug nicht sieht:

    root@BM2LTSnativeMC:/tmp# netcvupdate -n -e -d eth0.2 -i fe80::208:54ff:fe54:b261 -U /tmp/netceiver.conf


    Debug Ausgabe des scripts in der Konsole (wird am Ende der Funktion run_ftp in Zeile 202 ausgegeben) :


    open fe80::208:54ff:fe54:b261%eth0.2

    user root root

    cd /mmc/etc/

    put /tmp/netceiver.conf netceiver.conf

    quit


    Das müsste so sein:

    put /tmp/netceiver.conf -o netceiver.conf


    Gebaut wird das Script hier (ev. muss man das -o escapen ? )

    int do_single_upload( char *uuid, char *device, char *remote_path, char *fname, char *remote_file){

    int ret;sprintf(script,

    "open %s%%%s\n"

    "user %s %s\n"

    "cd %s\n"

    "put %s -o %s\n"

    // "site exec killall -HUP mserv\n"

    "quit",

    uuid,device,username,password,remote_path,fname,remote_file);

    ret=run_ftp("", script, 120,"");

    return ret;

    }

    Liebe Grüße g ;)

    NCV6dvbS2+Alphacrypt+ORF, BM2LTS4.4 NUC11i3 NVMe+HDD, BM2LTS2.94.4 AVG1 T7400 SSD+HDD NvidiaGT720

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!