Scriptproblem

  • Wenn ich in ein Script


    sudo stop vdr


    schreibe und dieses Script auf der Konsole als root ausführe, stoppt der vdr


    Führe ich das gleiche Skript über einen Eintrag in der commands.custums.conf aus, geschieht nichts.


    Andere Scripte funktionieren aus der commands.customs.conf heraus.


    Was mach ich falsch?

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

  • Du musst in der sudo Config noch einstellen welcher User dieses Kommando als Root ausführen darf.
    Ansonsten wäre ja blöd, dann könnte ja jeder User Admin Sachen machen nur weil er sudo davorschreibt ;)


    cu

  • Du meinst die /etc/sudoers?


    Darin steht bei mir:


    ------------------------------


    Defaults<------>env_reset


    root<-->ALL=(ALL) ALL


    %admin ALL=(ALL) ALL


    vdr ALL=NOPASSWD: ALL


    -----------------------------------


    Den letzten Eintrag habe ich selber vorgenommen. Reicht das nicht aus?

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

  • Naja, du must erstmal rausfinden wie das Script GENAU heißt was du aufrufen willst. "stop vdr" (Programm "stop" mit dem Parameter "vdr") wirds ja nicht sein.


    Und dein Eintrag erlaubt dem User vdr alles, ist auch ungünstig. Dann könntest du es dir gleich sparen den VDR als User laufen zu lassen.


    So in der Art (Pfad und Namen des Stopscriptes anpassen) sollte das AFAIK gehen:
    vdr localhost = NOPASSWD: /sbin/stopvdr


    cu

  • Wenn ich


    vdr ALL=NOPASSWD: ALL


    verwende, muss ich meines Wissens nicht explizit z.B.


    vdr ALL=NOPASSWD: /sbin/stop


    angeben. Oder liege ich da falsch?


    Ich möchte eine geänderte channels.conf einlesen, dafür muss der vdr gestoppt werden.
    sudo stop vdr-frontend;sudo stop nodm dürfte dafür wohl nicht reichen. Mit stop vdr soll der vdr komplett gestoppt werden.


    Genau das funktioniert nicht.


    Hier das (verkürzte) Script:


    FILEORIG=/var/lib/vdr/channels.conf
    KANAELE=/etc/vdr/plugins/kanäle.conf
    stop vdr
    cat $KANAELE >> $FILEORIG
    start vdr

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

    Einmal editiert, zuletzt von rkp ()

  • Zitat

    Original von rkp
    Ich möchte eine geänderte channels.conf einlesen, dafür muss der vdr gestoppt werden.


    Nein, muss er nicht. Wenn du das nur dafür machst, dann würde ich dir dringend empfehlen die Manipulationen an der /etc/sudoers zu lassen und den Original-Zustand wieder herzustellen. Als
    nächsten Schritt sieh dir mal das Channellists-Plugin an. Und das Beste ist, dein VDR hat das Plugin sogar schon geladen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Hallo Gerald,


    vielen Dank für den Hinweis auf das Channellists-Plugin, damit kann ich tatsächlich mein eigentliches Problem lösen.


    Dennoch würde ich gerne verstehen, warum man den VDR unter yavdr nicht per Script unter Einsatz von sudo einfach stoppen und starten kann.


    Grüße


    rkp

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

  • Zitat

    Original von rkp
    Dennoch würde ich gerne verstehen, warum man den VDR unter yavdr nicht per Script unter Einsatz von sudo einfach stoppen und starten kann.


    Sowas probiert man am besten mal auf der Konsole aus (als User "vdr" Einloggen) und nicht direkt in der commands.customs.conf (dann siehst du evtl. Fehlermeldungen ja nicht).


    BTW: Hast du den Rechner mal neu gestartet (oder wenigstens den sudoers Daemon) nachdem du die sudoers geändert hast?


    BTW2: Zum ändern der sudoers Config sollt eman den speziell angepassten sudoers VI nutzen (der sudoers Daemon ist wohl pingelig beim parsen), hast du das getan?


    cu

  • Die sudoers habe ich mit visudo bearbeitet und den Rechner neu gestartet.


    Als user vdr einloggen geht nicht, da wird ein Passwort verlangt, was ich nicht habe. Ich habe mich dann erst als root eingelogt, und dann su vdr gemacht, das hat funktioniert. Mein Script hat dennoch nicht funktioniert, der vdr wurde zwar gestartet bzw. gestoppt, aber die geänderte channels.conf trotzdem nicht eingelesen.
    Ich verwende jetzt das Channellists-Plugin, das funktioniert einwandfrei.



    Es ist aber dennoch frustig, wenn man etwas nicht hin bekommt, und nicht weiß, warum.


    Ich würde gerne mal testweise yavdr als root starten. Weiß jemand, wie man das einrichtet?

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA


  • startest du das oben genannte Script dann auch per sudo? Sonst kann das nämlich garnicht funktionieren, da er die Root Rechte ohne sudo ja garnicht freigibt.


    Du hast also folgende Möglichkeiten:


    1. Du startest direkt das Script per sudo: "sudo ./test.sh"
    2. Du gibst die Befehle die Root Rechte benötigen direkt im Script an: "sudo stop vdr" & "sudo start vdr".


    hier funktioniert es so jedenfalls einwandfrei.

    HW1: Streacom ST-F7C Alpha Optical | ASUS Z170I Pro Gaming | Intel i3-6100 | 8GB RAM | Streamdev | System/Video: 500GB Crucial MX200 | Intel 8260 (WiFi/BT)

    HW2: Antec Fusion Remote | Asus P5N7A-VM | Intel E5200 | 4GB RAM | TechniSat Skystar HD | System: 80GB Intel X25-M G2 | Video: 1TB Western Digital WD10EACS

    SW: yaVDR 0.6.1

  • Ja, das Script starte ich mit sudo, geht aber trotzdem nicht.


    Das folgende Script kanal.sh sieht so aus:
    ================================
    #!/bin/sh
    FILEORIG=/var/lib/vdr/channels.conf
    FILECOPY=/var/lib/vdr/channels-copy.conf
    KANAELE=/etc/vdr/plugins/kanäle.conf


    cp -f $FILEORIG $FILECOPY
    cat $KANAELE >> $FILEORIG
    svdrpsend plug channellists load


    ===============================
    Rechte: 755 vdr:vdr


    Gestartet wird es aus der commands.custom.conf mit der Zeile
    Kanal : sudo /usr/bin/kanal.sh


    Wenn ich dieses Skript auf der Konsole unter root oder vdr starte, läuft es. Aus der commands.conf heraus funktioniert es nur teilweise (!), der Teil mit:
    svdrpsend plug channellists load
    funktioniert nicht, d.h. der vdr zeigt nicht die geänderte channels.conf. Erst ein Neustart des vdr behebt das.


    Mir fällt jetzt nichts mehr dazu ein.

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

    2 Mal editiert, zuletzt von rkp ()

  • Bau in Dein Script mal eine DEBUG-Meldung mit ein:


    svdrpsend mesg "erstelle neue Channels.conf"


    Dann siehst Du wenigstens, wo und ob es hakt.


    Versuche doch mal die Channels.conf direkt m,it anzugeben:


    svdrpsend plug channellists load /etv/vdr/channels.conf


    Gruß,
    Chris


    VDR 1: Was altes im Keller
    VDR 3: yavdr64 0.6, ASRock Q1900M

  • /bin/stop,start in die sudo zu tun, und dann das skript auszuführen mit sudo, wird nie gehen, den vdr per script aus dem vdr zu stoppen oder ihm nachrichten zu schicken wenn er aus ist, ist auch doof. Zumal es zum restart schon beispiele gibt in den Commands.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • svdrpsend ist im Pfad, scheint aber nicht zu funktionieren per Script (svdrpsend mesg "erstelle neue Channels.conf" wird auch nicht ausgeführt)


    Der Rest vom Script wird ausgeführt.

    Intel NUC 10 NUC10i3FNH, Digital Devices Octopus NET V2 Max M4, 1000 GB Samsung 970 Evo M.2 2280 PCIe 3.0 x4 NVMe, LG OLED 77CX9LA

Jetzt mitmachen!

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