Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11
  1. #1
    Senior Mitglied Avatar von schorschi
    Registriert seit
    28.09.2014
    Ort
    Rhein-Main
    Beiträge
    573
    Thanks (gegeben)
    72
    Thanks (bekommen)
    106
    Total Downloaded
    167,06 MB
    Total Downloaded
    167,06 MB
    ReceiverDanke
    Box 1:
    GB UHD Quad 4K
     
     
    Box 2:
    GB UHD UE 4K
     
     
    Box 3:
    GB HD Quad Plus
     
     
    Box 4:
    GB HD X2
     
     

    Diverse Skripte: Boot, Standby, Watchdog, ...

    Guude @all,

    evtl. kann ja noch jemand folgende Skripte gebrauchen, ich setze diese auf allen Boxen ein

    Code:
    # Legt euch folgende Verzeichnisse an, falls noch nicht vorhanden:
    mkdir /usr/script
    mkdir /usr/log
    /usr/script/user_watchdog.sh
    Code:
    #!/bin/sh
    # ##########################################################
    # /usr/script/user_watchdog.sh
    # Beschreibung:
    #   Das Skript fuehrt Befehle/Skripte z.B. beim Start oder StandbyLeave oder per Cron alle "n" Minuten aus
    #
    # Parameter (optional):
    # "-b" = Skript wird beim Booten ausgefuehrt
    # "-c" = Skript wird per Cron ausgefuehrt
    # "-s" = Skript wird bei StandbyLeave (Verlassen des Standby, also Einschalten der Box) ausgefuehrt
    #
    # CRON EXAMPLE (Skript alle 30 Minuten ausfuehren):
    # min   hour     day     month   dow   command
    # */30  *        *       *       *     [ -x /usr/script/user_watchdog.sh ] && /usr/script/user_watchdog.sh -c >/dev/null 2>&1
    # ##########################################################
    
    # USER SETUP ###############################################
    uNtpServer=''                             # Zeit ueber einen Zeitserver aktualisieren (z.B. "pool.ntp.org") oder leer lassen
    uDdnsScript=''                            # DDNS-Client-Script ausfuehren oder leer lassen (z.B. "/usr/script/ddns_client.sh")
    #uDdnsScript='/usr/script/ddns_client.sh'  # DDNS-Client-Script ausfuehren oder leer lassen (z.B. "/usr/script/ddns_client.sh")
    uDdnsParams='-s'                          # Parameter, mit dem das DDNS-Client-Script ggf. aufgerufen werden soll
    uCamdName='oscam'                         # Prozess-Name der CAMD (falls installiert) oder leer lassen
    uCamdScript='/usr/bin/camdctrl'           # Skript um das CAMD zu starten/stoppen oder leer lassen
    uCamdParams='start'                       # Parameter, mit dem das CAMD ggf. gestartet werden soll
    uSetVolume=-1                             # Lautstaerke immer auf diesen Wert setzen oder zum Deaktivieren auf -1 einstellen - wird nur ausgefuehrt, wenn das Skript ohne Parameter "-c" aufgerufen wird
    uButtonCodes="2 352 174"                  # Tasten (Button-Codes!), die "gedrueckt" werden sollen - wird nur ausgefuehrt, wenn das Skript ohne Parameter "-c" aufgerufen wird. Bsp. "2 352 174" = fuehrt jeweils "einen Klick" auf die Tasten 1, OK und EXIT aus. Siehe z.B. https://dream.reichholf.net/wiki/Enigma2:WebInterface#RemoteControl
    uUnmute=1                                 # 1 = Ton einschalten falls stummgeschaltet - wird nur ausgefuehrt, wenn das Skript ohne Parameter "-c" aufgerufen wird
    uLogFile="/usr/log/user_watchdog.log"     # Logfile oder leer lassen
    uLogMaxSize=32786                         # max. Groesse des Logfiles bevor es wieder geleert wird
    # ##########################################################
    
    # INIT #####################################################
    export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    
    pStandbyLeave=0
    pBoot=0
    pCron=0
    pLog=0
    pCntLog=0
    pWebIf=0
    pSep='############################################################'
    
    for p in $*; do
      case "$p" in
        "s"|"-s")
          pStandbyLeave=1
        ;;
        "c"|"-c")
          pCron=1
        ;;
        "b"|"-b")
          pBoot=1
        ;;
      esac
    done
    
    if [ -n "$uLogFile" ] && [ -d `dirname "$uLogFile"` ]; then
      pLog=1
    else
      uLogFile='/dev/null'
    fi
    
    # FUNCTIONs ################################################
    # Write Logfile
    wLog() {
      if [ $pLog -eq 1 ]; then
        [ $pCntLog -eq 0 ] && echo "$pSep" >> $uLogFile
        echo $(date "+%d.%m.%Y %H:%M:%S")" - $1" >> $uLogFile
        pCntLog=`expr $pCntLog + 1`
      fi
    }
    
    # Clean Logfile
    cLog() {
      if [ $pLog -eq 1 ] && [ -e "$uLogFile" ]; then
        curLogSize=$(stat -c %s "$uLogFile")
        if [ $curLogSize -gt $uLogMaxSize ]; then
          tail -n 20 "$uLogFile" > "$uLogFile"
          pCntLog=0
          wLog "Reset Logfile"
        fi
      fi
    }
    
    # INIT Logfile #############################################
    # ausser wenn per Cron ausgefuehrt...
    if [ $pCron -eq 0 ]; then
      if [ $pBoot -eq 1 ]; then
        wLog "BOOT"
      elif [ $pStandbyLeave -eq 1 ]; then
        wLog "STANDBY LEAVE"
      else
        wLog "WITHOUT PARAMETER"
      fi
    fi
    
    # ##########################################################
    # KOMMANDOS, DIE DAS WEBIF NICHT BENOETIGEN
    # ##########################################################
    # NTP ******************************************************
    if [ -n "$uNtpServer" ]; then
      wLog "Starte Aktualisierung der Systemzeit"
      if [ -x ntpdate ]; then
        ntpdate -v -b -u "$uNtpServer" >> $uLogFile 2>&1
        if [ -e "/proc/stb/fp/rtc" ]; then
          date +%s > "/proc/stb/fp/rtc" &
        fi
      else
        wLog "ERROR: ntpdate ist nicht vorhanden!"
      fi
    fi
    
    # CAMD *****************************************************
    if [ -n "$uCamdName" -a -n "$uCamdScript" ] && [ -x "$uCamdScript" ]; then
      if [ `pgrep -c "$uCamdName"` -eq 0 ]; then
        wLog "Starte $uCamdName"
        $uCamdScript $uCamdParams >> $uLogFile 2>&1 &
      fi
    fi
    
    # DDNS *****************************************************
    if [ -n "$uDdnsScript" ] && [ -x "$uDdnsScript" ]; then
    #  wLog "Starte DDNS-Skript"
      $uDdnsScript $uDdnsParams >> $uLogFile 2>&1 &
    fi
    
    
    # ##########################################################
    # KOMMANDOS, DIE DAS WEBIF BENOETIGEN
    # ##########################################################
    # ist das WebIF schon gestartet?! Versuche es max. 2 Minuten...
    i=0
    until [ $pWebIf -eq 1 ]; do
      i=`expr $i + 1`
    
      if [ `wget -qO - 'http://127.0.0.1' | grep -ci "<html"` -ne 0 ]; then
        pWebIf=1
        break
      else
        if [ $i -ge 24 ]; then
          # 2 Minuten lang gecheckt (24 * 5 Sek.) => Abbruch
          break
        else
          sleep 5
        fi
      fi
    done
    
    if [ $pWebIf -eq 1 ]; then
      # ********************************************************
      # KOMMANDOS, DIE NICHT PER CRONJOB AUSGEFUEHRT WERDEN SOLLEN
      # ********************************************************
      if [ $pCron -eq 0 ]; then
        # VOLUME ***********************************************
        if [ -n "$uSetVolume" ] && [ $uSetVolume -ge 0 ]; then
          volume=$(wget -qO - 'http://127.0.0.1/web/vol') > /dev/null 2>&1
          v=$(echo $volume | grep "\(<\|</\)e2current" | tr -d '\n' | sed "s/.*<e2current>\(.*\)<\/e2current.*/\\1\n/")
          if [ ! $v -eq $uSetVolume ]; then
            wLog "Setze Lautstaerke auf $uSetVolume"
            wget -qO - "http://127.0.0.1/web/vol?set=set$uSetVolume" >/dev/null 2>&1 &
          fi
        fi
    
        # UNMUTE *************************************************
        if [ -n "$uUnmute" ] && [ $uUnmute -eq 1 ]; then
          volume=$(wget -qO - 'http://127.0.0.1/web/vol') >/dev/null 2>&1
          m=$(echo $volume | grep "\(<\|</\)e2ismuted" | tr -d '\n' | sed "s/.*<e2ismuted>\(.*\)<\/e2ismuted.*/\\1\n/")
          if [ "$m" = "True" -o "$m" = "true" ]; then
            wLog "Unmute Box"
            wget -qO - "http://127.0.0.1/web/vol?set=mute" >/dev/null 2>&1 &
          fi
        fi
    
        # BUTTON-CODES *******************************************
        if [ -n "$uButtonCodes" ]; then
          wLog "Fuehre Fernbedienung-Tasten-Codes \"$uButtonCodes\" aus"
          for bc in $uButtonCodes; do
            wget -qO - "http://127.0.0.1/web/remotecontrol?command=$bc" >/dev/null 2>&1
          done
        fi
      fi
    fi
    
    # EXIT #####################################################
    cLog
    exit 0
    /usr/script/user_start.sh
    Code:
    #!/bin/sh
    # ##########################################################
    # /usr/script/user_start.sh
    # Beschreibung:
    #   Das Skript führt Befehle/Skripte beim Einschalten des Receiver aus
    #
    # Als Boot-Skript installieren:
    #   copy this file to:  /usr/script/user_start.sh
    #   chmod this file:    chmod 0755 /usr/script/user_start.sh
    #   create a symlink:   ln -s /usr/script/user_start.sh /etc/rc3.d/S91user_start.sh
    #
    # Als Boot-Skript deinstallieren:
    #   rm /etc/rc3.d/S91user_start.sh
    #
    # ##########################################################
    
    [ -x /usr/script/user_watchdog.sh ] && /usr/script/user_watchdog.sh -b > /dev/null 2>&1 &
    
    exit 0
    /usr/script/user_stop.sh
    Code:
    #!/bin/sh
    # ##########################################################
    # /usr/script/user_stop.sh
    # Beschreibung:
    #   Das Skript führt Befehle/Skripte beim Ausschalten und Deep-Standby des Receivers aus
    #
    # Install:
    #   copy this file to:    /usr/script/user_stop.sh
    #   chmod this file:      chmod 0755 /usr/script/user_stop.sh
    #   symlink reboot:       ln -s /usr/script/user_stop.sh /etc/rc6.d/K12user_stop.sh
    #   symlink deep standby: ln -s /usr/script/user_stop.sh /etc/rc0.d/K12user_stop.sh
    #
    # Uninstall:
    #   rm /etc/rc6.d/K12user_stop.sh
    #   rm /etc/rc0.d/K12user_stop.sh
    # ##########################################################
    
    # USER SETUP ###############################################
    uCamdName='oscam'                         # Prozess-Name der CAMD (falls installiert) oder leer lassen
    uCamdScript='/usr/bin/camdctrl'           # Skript für das CAMD oder leer lassen
    uCamdParams='stop'                        # Parameter, mit dem das CAMD ggf. beendet werden soll
    # ##########################################################
    
    # INIT #####################################################
    export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
    
    # ACTIONs ##################################################
    # CAMD *****************************************************
    if [ -n "$uCamdName" -a -n "$uCamdScript" ] && [ -x "$uCamdScript" ]; then
      if [ `pgrep -c "$uCamdName"` -ne 0 ]; then
        $uCamdScript $uCamdParams > /dev/null 2>&1 &
      fi
    fi
    
    
    exit 0
    /usr/script/StandbyLeave.sh
    Code:
    #!/bin/sh
    # ##########################################################
    # /usr/script/StandbyLeave.sh
    # Beschreibung:
    #   Das Skript führt Befehle/Skripte beim Einschalten des Receiver aus dem Standby aus
    #
    # ##########################################################
    
    [ -x /usr/script/user_watchdog.sh ] && /usr/script/user_watchdog.sh -s > /dev/null 2>&1 &
    
    exit 0
    /usr/script/user_update.sh
    Code:
    #!/bin/sh
    # ##########################################################
    # /usr/script/user_update.sh
    # Beschreibung:
    #   Checke was es an Updates gibt und installiere diese erst, nachdem du diese gesichtet hast
    #
    # Parameter:
    #   1 = opkg update   == zeigt dir nur an, was an Updates ansteht
    #   2 = opkg upgrade  == fuehrt die Updates durch
    #   3 = Reboot        == startet den Receiver neu
    #   4 = GUI starten   == startet das GUI nach den Updates neu, falls du mal nicht neustarten moechtest (nicht empfohlen)
    # ##########################################################
    
    case "$1" in
      1) opkg update && opkg list-upgradable | sort ;;
      2) init 4 && sleep 10 && opkg upgrade ;;
      3) shutdown -r now ;;
      4) init 3 ;;
      *)
        echo "Usage: $0 {1|2|3|4}"
        exit 1
        ;;
    esac
    
    exit 0
    Geändert von schorschi (18.07.2019 um 10:10 Uhr)
    Beste Grüße
    Schorsch

    --------------------------------------------------------------------------------
    E2Shell - E2Info - DDNS-Client - My Keymap - NFS Speed-Test - Div. Skripte

  2. Thanks Captain, Bundi, Heart, schaschix bedankten sich
    •   Alt Advertising

       

  3. #2
    Avatar von Captain
    Registriert seit
    03.04.2013
    Beiträge
    14.861
    Thanks (gegeben)
    763
    Thanks (bekommen)
    21092
    Total Downloaded
    162,47 MB
    Total Downloaded
    162,47 MB
    ReceiverDanke
    danke ja so was ist immer gut


    openATV we are open Source

    Boykott GPL violator

  4. #3
    Senior Mitglied Avatar von schorschi
    Registriert seit
    28.09.2014
    Ort
    Rhein-Main
    Beiträge
    573
    Thanks (gegeben)
    72
    Thanks (bekommen)
    106
    Themenstarter
    Total Downloaded
    167,06 MB
    Total Downloaded
    167,06 MB
    ReceiverDanke
    Box 1:
    GB UHD Quad 4K
     
     
    Box 2:
    GB UHD UE 4K
     
     
    Box 3:
    GB HD Quad Plus
     
     
    Box 4:
    GB HD X2
     
     
    ein Beispiel Start/Stopp-Skript für "oscar". Die Basis kommt von "Newnigma2", ich habe es nur ein wenig modifiziert

    Falls unerwünscht, bitte sofort löschen.

    Code:
    #!/bin/sh
    # /usr/bin/camdctrl
    # CAMD binary (process) name
    EMUNAME="oscam"
    # OSEmu binary (process) name - optional
    # OSEMU_NAME="OSEmu"
    OSEMU_NAME=""
    # OSEmu port
    OSEMU_PORT=11000
    # OSEmu user
    OSEMU_USER='oscam'
    # OSEmu password
    OSEMU_PASS='oscam'
    # OSEmu logfile; default = empty (optional, e.g. "/tmp/OSEmu.log")
    OSEMU_LOG=''
    # LOG
    logFile='/usr/log/camdctrl.log'
    maxLogfileSize=4096
    
    # PRIVATE **************************************************
    if [ ! -z "$logFile" ] && [ -d `dirname $logFile` ]; then
      logEnabled=1
    else
      logEnabled=0
    fi
    
    if [ ! -x "/usr/bin/$EMUNAME" ]; then
      t=`find /usr/bin -type f -name "oscam*" 2>&1 | head -n 1`
      if [ -x "$t" ]; then
        EMUNAME=$(basename $t)
      fi
    fi
    
    # FUNCTIONs ************************************************
    log() {
      if [ $logEnabled -eq 1 ]; then
        echo "$(date "+%Y/%m/%d %H:%M:%S") - $1" >> $logFile
      fi
    }
    
    logClean() {
      if [ $logEnabled -eq 1 ] && [ -s $logFile ]; then
        if [ ! -z "$(which stat)" ]; then
          curLogSize=$(stat -c %s $logFile)
        else
          curLogSize=$(wc -c $logFile | sed 's/^ *//' | cut -d " " -f 1)
        fi
        if [ $curLogSize -ge $maxLogfileSize ]; then
          tail -n 10 $logFile > $logFile".tmp"
          echo '...' > $logFile
          cat $logFile".tmp" >> $logFile
          rm -f $logFile".tmp"
          echo >> $logFile
          echo "$(date "+%Y/%m/%d %H:%M:%S") - the log file has been reset ($maxLogfileSize Bytes)" >> $logFile
        fi
      fi
    }
    
    remove_tmp() {
      rm -f /tmp/ecm*   >/dev/null 2>&1
      rm -f /tmp/oscam* >/dev/null 2>&1
      [ -e "$OSEMU_LOG" ] && rm -f "$OSEMU_LOG"
    }
    
    
    # START/STOP/RESTART/INFO **********************************
    case "$1" in
      start)
        logClean
        log "$0 - $1"
        confDir=''
        if [ -s /usr/keys/oscam.conf ]; then
          confDir='/usr/keys'
        elif [ -s /var/keys/oscam.conf ]; then
          confDir='/var/keys'
        else
          confDir=`dirname $(find /usr /var /etc -type f -name oscam.conf | head -n 1)`
        fi
    
        if [ -z "$confDir" ] || [ ! -d $confDir ]; then
          msg="$1: ERROR - $EMUNAME config not found!"
          echo "$msg" && log "$msg"
          exit 1
        fi
    
        # OSEmu --------------------------------------------
        if [ ! -z "$OSEMU_NAME" ] && [ -x "/usr/bin/$OSEMU_NAME" ];then
          msg="$1: $OSEMU_NAME"
          echo "$msg" && log "$msg"
          if [ ! -z "`pidof $OSEMU_NAME`" ]; then
            msg="$1: $OSEMU_NAME is already running!"
            echo "$msg" && log "$msg"
          else
            log "$1: Starting $OSEMU_NAME..."
            if [ ! -z "$OSEMU_LOG" ]; then
              /usr/bin/$OSEMU_NAME -a $OSEMU_USER:$OSEMU_PASS -p $OSEMU_PORT -b -c $confDir -l $OSEMU_LOG > /dev/null 2>&1 &
            else
              /usr/bin/$OSEMU_NAME -a $OSEMU_USER:$OSEMU_PASS -p $OSEMU_PORT -b -c $confDir > /dev/null 2>&1 &
            fi
          fi
        fi
    
        # OSCam ------------------------------------------------
        msg="$1: $EMUNAME"
        echo "$msg" && log "$msg"
        if [ ! -z "`pidof $EMUNAME`" ]; then
          msg="$1: $EMUNAME is already running!"
          echo "$msg" && log "$msg"
        else
          log "$1: Starting $EMUNAME..."
          /usr/bin/$EMUNAME -b -r 2 -u -c $confDir > /dev/null 2>&1 &
        fi
      ;;
      stop)
        log "$0 - $1"
        # OSEmu ------------------------------------------------
        if [ ! -z "$OSEMU_NAME" ] && [ -x "/usr/bin/$OSEMU_NAME" ]; then
          msg="$1: $OSEMU_NAME"
          echo "$msg" && log "$msg"
          if [ -z "`pidof $OSEMU_NAME`" ]; then
            msg="$1: $OSEMU_NAME is not running!"
            echo "$msg" && log "$msg"
          else
            log "$1: Send kill command to $OSEMU_NAME..."
            kill `pidof $OSEMU_NAME`
            sleep 2
            if [ ! -z "`pidof $OSEMU_NAME`" ]; then
              log "$1: $OSEMU_NAME has not been stopped! Send kill -9 command..."
              kill -9 `pidof $OSEMU_NAME`
              sleep 2
            fi
            if [ ! -z "`pidof $OSEMU_NAME`" ]; then
              log "$1: $OSEMU_NAME has not been stopped! Send killall command..."
              killall $OSEMU_NAME
              sleep 2
            fi
          fi
        fi
    
        # OSCam ------------------------------------------------
        msg="$1: $EMUNAME"
        echo "$msg" && log "$msg"
        if [ -z "`pidof $EMUNAME`" ]; then
          msg="$1: $EMUNAME is not running!"
          echo "$msg" && log "$msg"
        else
          log "$1: Send kill command to $EMUNAME..."
          kill `pidof $EMUNAME`
          sleep 2
          if [ ! -z "`pidof $EMUNAME`" ]; then
            log "$1: $EMUNAME has not been stopped! Send kill -9 command..."
            kill -9 `pidof $EMUNAME`
            sleep 2
          fi
          if [ ! -z "`pidof $EMUNAME`" ]; then
            log "$1: $EMUNAME has not been stopped! Send killall command..."
            killall $EMUNAME
            sleep 2
          fi
        fi
    
        remove_tmp
      ;;
      restart)
        log "$0 - $1"
        $0 stop
        $0 start
      ;;
      info)
        if [ -x "/usr/bin/$EMUNAME" ]; then
          if [ -z "`pidof $EMUNAME`" ]; then
            msg="$EMUNAME is off!"
          else
            msg="$EMUNAME is running!"
          fi
          v=`/usr/bin/$EMUNAME -V | grep -im 1 "^version" | sed 's/.*-r\([0-9]*\)/\1/'`
          msg=$msg" Version: "$v
          echo "$msg"
        else
          echo "$EMUNAME is not installed!"
        fi
    
        if [ -z "$OSEMU_NAME" ]; then
          echo "OSEmu is not defined!"
        elif [ -x "/usr/bin/$OSEMU_NAME" ]; then
          if [ -z "`pidof $OSEMU_NAME`" ]; then
            msg="$OSEMU_NAME is off!"
          else
            msg="$OSEMU_NAME is running!"
          fi
          v=`/usr/bin/$OSEMU_NAME -i 2>&1 | cut -d " " -f3`
          msg=$msg" Version: "$v
          echo "$msg"
        else
          echo "$OSEMU_NAME is not installed!"
        fi
      ;;
      *)
        msg="Usage: $0 start|stop|restart|info"
        echo "$msg" && log "$msg"
        exit 1
      ;;
    esac
    
    exit 0
    Beste Grüße
    Schorsch

    --------------------------------------------------------------------------------
    E2Shell - E2Info - DDNS-Client - My Keymap - NFS Speed-Test - Div. Skripte

  5. Thanks Bundi bedankten sich
  6. #4
    Anfänger
    Registriert seit
    20.05.2019
    Beiträge
    10
    Thanks (gegeben)
    1
    Thanks (bekommen)
    0
    Total Downloaded
    0
    Total Downloaded
    0
    ReceiverDanke
    Box 1:
    Edision OS mini
     
     
    Braucht es die Variable 'pStandbyLeave' und somit den Switch "-s"? Außer, dass du die Variable umsetzt wenn der Switch mitgegeben wird, wird sie nirgends weiter verwendet. "/usr/script/StandbyLeave.sh" müsste "-s" nicht zwingend notwendigerweise mitgeben.
    Gleiches gilt für "pBoot": auch diese var wird nicht weiter verwendet und "/usr/script/user_start.sh" müsste nicht zwingend "-b" mitgeben.

    Schönheitsanmerkungen zu "/usr/script/user_update.sh":
    1) "! -z" ist selbstverständlich syntaktisch korrekt, allerdings sieht "-n" schöner aus und wird auch sonst überall so verwendet
    2) die "if-elif-elif-else-fi"-Kaskade sieht schöner mit einem "case-esac" aus
    3) Wenn in den runlevel 4 gewechselt und das Upgrade durchgeführt wird, wird anschließend nicht zurück in den runlevel 3 gesprungen: ist das so gewollt?
    4) Die äußere "if-elif-else-fi"-Kaskade macht keinen Sinn. Du fragst ab auf "-z $1" und auf "! -z $1", mehr Varianten gibt es nicht. Das innere "if" (oder "case") wirft ggf. "Unknown parameter" raus, das äußere "else" wird das nie tun. Also: "if [ -z $1 ]; ... else <if-elif-elif-else-fi> (oder besser: <case-esac>); fi".
    5) Du springst grundsätzlich mit "0" raus. Was ist, wenn das Upgrade fehlschlägt: willst du das bewusst verwerfen?

    Es sind deine Skripte und ich glaube dir, dass sie mit der Zeit bei dir gereift sind und gut funktionieren. Allerdings bin ich kein Freund von fehlendem error handling: wenigstens ein "set -e" sollte für einen definierten Abbruch des Skripts sorgen, idealerweise kombiniert mit einem geeigneten "trap", und Konstrukte wie "${irgendein_command} > /dev/null 2>&1" machen etwaiges troubleshooting nicht einfacher.

    No offence meant!
    $ opkg info openatv-version-info | grep ^Version
    Version: 6.2-0
    $ cat /etc/version
    20190704154000

  7. #5
    Senior Mitglied Avatar von schorschi
    Registriert seit
    28.09.2014
    Ort
    Rhein-Main
    Beiträge
    573
    Thanks (gegeben)
    72
    Thanks (bekommen)
    106
    Themenstarter
    Total Downloaded
    167,06 MB
    Total Downloaded
    167,06 MB
    ReceiverDanke
    Box 1:
    GB UHD Quad 4K
     
     
    Box 2:
    GB UHD UE 4K
     
     
    Box 3:
    GB HD Quad Plus
     
     
    Box 4:
    GB HD X2
     
     
    besten Dank für dein Feedback PuppetMaster.

    Parameter "-s" wird bisher noch nicht ausgewertet, aber wer weiß was noch kommt, was explizit nur bei StandbyLeave ausgeführt werden soll. Das Gleiche gilt auch für "-b". Habe da einfach "nur" weitergedacht

    "! -z": Ja, "-n" ist schöner, aber auch nur schöner, sonst nix. Ich glaube früher war bei den meisten Images "-n" gar nicht in "test" kompiliert, stammt also aus alten Zeiten.

    "if-else" oder "case": Hier reden wir auch nur über Kosmetik. Die "sinnlose", von dir erwähnte äußere "else"-Abfrage, ist in der Tat "sinnlos", aber halt so gewachsen und sie tut keinesfalls weh.

    Runlevel 3: Nö, ich will ja nicht zurück in diesen Runlevel sondern die Box neustarten.

    "exit 0" und/oder Umleiten von "stderr" nach "null" oder ins Log: Diese Skripte werden z.T. beim Booten oder per Cron ausgeführt, somit sollen sie den Bootvorgang oder den Betrieb absolut in keiner Weise negativ beeinträchtigen. Wenn so ein Skript mal nicht läuft, juckt es den Betrieb der Box nicht und dass ist am wichtigsten.


    @all,

    ein Prob haben alle Skripte/Befehle, die auf das WebIF angewiesen sind und beim Booten der Box ausgeführt werden (@PuppetMaster, dass wäre z.B. ein Fall für Parameter "-b"), denn das WebIF ist zu dieser Zeit vermutlich noch nicht gestartet. Ein "sleep" oder anderen Startlevel kann man mal testen, würde aber davon abraten, wenn die Bootzeit dadurch erheblich verlängert wird. Mir ist es auch ziemlich egal, da ich alle Boxen im Standby starte.

    Ansonsten sollen die Skripte auch nur zeigen, was so möglich ist und das Leben mit den Boxen evtl. ein wenig erleichtert. Jeder ist sehr gerne dazu eingeladen, die Skripte zu erweitern oder zu verbessern
    Beste Grüße
    Schorsch

    --------------------------------------------------------------------------------
    E2Shell - E2Info - DDNS-Client - My Keymap - NFS Speed-Test - Div. Skripte

  8. #6
    Anfänger
    Registriert seit
    20.05.2019
    Beiträge
    10
    Thanks (gegeben)
    1
    Thanks (bekommen)
    0
    Total Downloaded
    0
    Total Downloaded
    0
    ReceiverDanke
    Box 1:
    Edision OS mini
     
     
    Ja: die restlichen Anmerkungen sind wirklich nur kosmetischer Natur und sonst nix. Ich bin, was "sauberen" Code angeht, beruflich vorbelastet. Wobei "sauber" sicherlich auch immer im Auge des Betrachters liegt. Für den einen ist Code "sauber", wenn er tut. Für den anderen erst, wenn "Inkonsistenzen" (wie "! -z" vs. "-n") nicht vorkommen. Vielleicht war ich da etwas zu pienzig

    Eine Frage hätte ich dennoch:
    Runlevel 3: Nö, ich will ja nicht zurück in diesen Runlevel sondern die Box neustarten.
    Ok, verstanden. Macht Sinn.
    Aber dein Skript leistet das nicht. Rufst du es nach dem Upgradeversuch ein zweites Mal auf und wirfst "3" rein? Was passiert, wenn das Upgrade fehlschlägt und du rebootest die Kiste?
    $ opkg info openatv-version-info | grep ^Version
    Version: 6.2-0
    $ cat /etc/version
    20190704154000

  9. #7
    Senior Mitglied Avatar von schorschi
    Registriert seit
    28.09.2014
    Ort
    Rhein-Main
    Beiträge
    573
    Thanks (gegeben)
    72
    Thanks (bekommen)
    106
    Themenstarter
    Total Downloaded
    167,06 MB
    Total Downloaded
    167,06 MB
    ReceiverDanke
    Box 1:
    GB UHD Quad 4K
     
     
    Box 2:
    GB UHD UE 4K
     
     
    Box 3:
    GB HD Quad Plus
     
     
    Box 4:
    GB HD X2
     
     
    @PuppetMaster, es sind Konsolen-Skripte, also insbesondere das "update"-Skript, wo ich die Ausgaben genau im Auge behalte. Ich hatte es mir nur irgendwann mal erstellt, um ein wenig Tippen oder die Konsolen-Befehls-Historie zu sparen. Ich führe das Skript mit Parameter 1 aus, schaue was die Ausgabe bringt und starte es erneut mit Param "2" und danach nochmals mit Param "1", erst danach (wenn also nix mehr kommt) boote ich die Box mit Param "3" neu.

    Ich möchte hiermit niemanden zu irgendeinem Skript zwingen Und zu "sauberen" Code kann ich nur sagen, dass ein funktionierender Code 1000 Mal wichtiger als ein "sauberer" Code ist (wobei mein Code sicherlich nicht "dreckig" ist). Ich Programmiere seit ca. 25 Jahren beruflich und Skripten ist dabei nur die Nebensache. Wie auch immer, mit "Copy&Paste", also die Übernahme alter Codefragmente (z.B. "! -z") in "neueren" Code hast du du vollkommen recht! Bin selbst auch immer "der", der bei solchen Dinger auf der Arbeit meckert
    Beste Grüße
    Schorsch

    --------------------------------------------------------------------------------
    E2Shell - E2Info - DDNS-Client - My Keymap - NFS Speed-Test - Div. Skripte

  10. #8
    Anfänger
    Registriert seit
    20.05.2019
    Beiträge
    10
    Thanks (gegeben)
    1
    Thanks (bekommen)
    0
    Total Downloaded
    0
    Total Downloaded
    0
    ReceiverDanke
    Box 1:
    Edision OS mini
     
     
    Zitat Zitat von schorschi Beitrag anzeigen
    Und zu "sauberen" Code kann ich nur sagen, dass ein funktionierender Code 1000 Mal wichtiger als ein "sauberer" Code ist (wobei mein Code sicherlich nicht "dreckig" ist).
    Da sind wir uns einig und ich wollte deinen Code auch nicht als dreckig bezeichnen. Wie gesagt: es waren rein ästetische Anmerkungen, keinesfalls Kritik!
    Dass du die Skripte nicht als blutiger Anfänger von stackoverflow o.ä. rauskopiert und irgendwie zusammengedengelt hast, dass du weißt, was du tust, das ist dem Code anzusehen. Dass alte und neue command substitution gemischt sind, ließ darauf schließen, dass entweder die Ur-Basis der Skripte schon älter ist, oder dass bestimme Fragmente aus anderen, älteren, Skripten übernommen wurden.
    Ich kritisiere Programmierer und Entwickler niemals. Ich reviewe Code und notfalls stelle ich einen bug report oder feature request ein und liefere den Fix gleich mit. Das ist -denke ich- die Art, in der Profis miteinander umgehen. Hab selbst in so manchem Ticket schon oberschlaue Kommentare von Usern lesen dürfen, die zwar nicht alles, aber zumindest alles besser wissen.

    Dass sich historische Altlasten immer irgendwo ansammeln und bis in alle Ewigkeit dort bleiben, das Problem kenne ich. Keine Ahnung an wievielen Stellen bei mir immernoch die alte command substitution zu finden ist. Oder wo ich Output in ein temporäres file schreibe, um es hinterher an 'grep' und/oder 'sed'/'awk' zu verfüttern, anstatt direkt zu pipen. Oder der Klassiker: "cat file | grep regex" Auch wenn ich mir in regelmäßigen Abständen immer wieder mal vornehme, das anzupassen ... irgendwie halten sich diese alten Fragmente hartnäckiger als Schimmel und Herpes.

    Long story, short: dein Code ist gut, ich war einfach zu pingelig, in Zukunft versuche ich mich zurückzuhalten damit und wenn ich was zu "meckern" habe, liegt ein Fix bei. Gut?
    $ opkg info openatv-version-info | grep ^Version
    Version: 6.2-0
    $ cat /etc/version
    20190704154000

  11. #9
    Senior Mitglied Avatar von schorschi
    Registriert seit
    28.09.2014
    Ort
    Rhein-Main
    Beiträge
    573
    Thanks (gegeben)
    72
    Thanks (bekommen)
    106
    Themenstarter
    Total Downloaded
    167,06 MB
    Total Downloaded
    167,06 MB
    ReceiverDanke
    Box 1:
    GB UHD Quad 4K
     
     
    Box 2:
    GB UHD UE 4K
     
     
    Box 3:
    GB HD Quad Plus
     
     
    Box 4:
    GB HD X2
     
     
    @PuppetMaster, ich möchte diesen Thread nicht mit Diskussionen breittreten, aber ja, alles gut, danke dir. Denke sogar, wir würden "arbeitstechnisch" gut zusammenpassen
    Geändert von schorschi (17.07.2019 um 09:54 Uhr)
    Beste Grüße
    Schorsch

    --------------------------------------------------------------------------------
    E2Shell - E2Info - DDNS-Client - My Keymap - NFS Speed-Test - Div. Skripte

  12. #10
    Avatar von Papi2000
    Registriert seit
    20.04.2013
    Beiträge
    24.934
    Thanks (gegeben)
    4699
    Thanks (bekommen)
    9129
    Total Downloaded
    596,61 MB
    Total Downloaded
    596,61 MB
    ReceiverDanke
    Box 1:
    GB Q4K-SC / UE4K-SC / UE4K-C
     
     
    Box 2:
    GigaBlue Q-SSC / Q+-SSC
     
     
    Box 3:
    DM900uhd-SS / Vu+Duo
     
     
    Box 4:
    ZGemma H7/H9 SF8008
     
     
    Box 5:
    diverse andere . . .
     
     
    Die Feinheiten zu dem besonderen Script werden hier aber NICHT haarklein auseindergenommen.
    Boardregeln beachten.
    Da gibt es fertige Pakete, in denen funktionierende Scripte dabei sein sollen. Daher: Hier NEIN.
    Geändert von Papi2000 (16.07.2019 um 19:13 Uhr)
    Grüßle
    Ralf
    ---------------------------------------------
    Gigablue Quad4K-mixed, UE4K, Trio4K, Quad_Plus-SSC, UE_Plus-SC, X2/X3-SC, UltraUE-SC, ...
    Astra 19.2E UniCable & KabelBW, oATV/teamBlue
    (u.a.: DM900uhd,Vu+Duo,ZGemma H9Twin & H7S), PC-DVB-S/C/T, Xtreamer, BDP5200, Philips 24PFS4022/12, 65OLED855/12,UE32C5700, RPi3+
    ---- Einen Receiver kann sich jeder kaufen - Eine stabile E²-Box muß man sich verdienen! ----




Seite 1 von 2 12 LetzteLetzte

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Powered by vBulletin® Version 4.2.5 (Deutsch)
Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.
Resources saved on this page: MySQL 5,56%
Parts of this site powered by vBulletin Mods & Addons from DragonByte Technologies Ltd. (Details)
vBulletin Skin By: PurevB.com