Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Frage zu einem Shell Script (Raspberry)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Frage zu einem Shell Script (Raspberry)

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sugram last edited by

      Hallo

      Ich hätte da mal eine Frage, evtl. kann mir da jemand weiterhelfen.
      Auf meinem Pi läuft der IoBroker und das HabPanel wird mittels Midori auf einem Display dargestellt.
      Bei einer Änderung, habe ich bisher immer manuell die Midori Session gekillt und neu gestartet.
      Nun war meine Idee, daß ich das direkt über ein Button auf dem HabPAnel machen könnte.

      Ich bin nun schon soweit, daß ich ein php File habe, daß mir auch erfolgreich ein Shellscript ausführt.
      Nun zu meinem Problem:

      Ich habe ein Shellscript (midori-restart.sh) mit folgendem Inhalt:

      sudo kill -9 $(ps -ef | grep midori | grep -v grep | awk '{print$2}') &
      sleep 3
      sudo xinit ./startMidori.sh &
      

      wenn ich das dann mit ./midori-restart.sh aufrufe, wird das auch alles erfolgreich ausgeführt.
      Also Midori Session wird gekillt und anschließend wieder gestartet.

      In dem php script folgendes:

      <?php
      if ($_GET['run']) {
        # This code will run if ?run=true is set.
        #exec("/path/to/name.sh");
        $script = "sudo /home/pi/midori-restart.sh";
        $run=`$script`;
      }
      ?>
      
      <!-- This link will add ?run=true to your URL, myfilename.php?run=true -->
      
      <style type="text/css">
      
      
      a { color: #ffffff; text-decoration: none; }
      
      
      </style>
      
      
      <a href="?run=true">Display restart</a>
      

      Hier wird dann allerdings nur die Midori Session beendet, aber nicht erneut gestartet.

      Das selbe ist dann der Fall wenn ich das Script mit sudo ./midori-restart.sh ausführe, wird ebenfalls nur die Midori Session gekillt, aber nich erneut gestartet.

      Wenn ich in dem php script das sudo weg lasse, wird das Script nicht mehr ausgeführt.

      Kann mir da jemand nen Tipp geben, an was das genau liegt?!

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @sugram last edited by mickym

        @sugram Nun ich bin kein Shell Script Guru - bei sowas ist evtl. @Thomas-Braun ein geeigneter Ansprechpartner.

        Ich würde mal auf folgende Fehler tippen:

        1. Wenn Du das script von irgendeinem Verzeichnis aus startest, dann ist wahrscheinlich das aktuelle Verzeichnis ein anderes und deshalb wird das Skript startMidoir.sh nicht gefunden. Also wäre ggf. eine absolute Pfadangabe oder ein Wechsel in das Verzeichnis sinnvoll.
        2. ggf. würde ich statt in einem Script den Restart auszuführen, auch das Killen des alten Prozesses und den Neustart des Prozesses über startMidort.sh getrennt ausführen.

        Eventuell überprüfen ob die Shellskripts ausführbar sind und eigentlich sollte die 1. Zeile in den Skripts mit dem

        #!/bin/bash

        beginnen.

        S 1 Reply Last reply Reply Quote 0
        • S
          sugram @mickym last edited by sugram

          @mickym

          Es spielt keine Rolle, ob ich das Script so sudo ./midori-restart.sh oder sudo /home/pi/midori-restart.sh ausführe.
          Es wird hierbei nur die midori Session gekillt.
          Ohne dem sudo klappt das Script ja auch einwandfrei.

          Das mit dem getrennt ausführen ist ja so ne Sache, ich möchte das ja über das Display erledigen.
          Wenn ich die midori Session gekillt habe, müsste ich dann auf dem Display auf der Konsole ja wieder einen Befehl eingeben.
          Aber da hängt jetzt keine Tastatur dran und ich wollte das eigentlich auch automatisieren.

          sobald ich in dem script
          #!/bin/bash
          eintrage, geht das ganze nicht mehr, denn das hatte ich am Anfang auch drin.

          S 1 Reply Last reply Reply Quote 0
          • S
            sugram @sugram last edited by

            Nur so ein Gedanke.

            Wenn einer weiß wie man den PHP Code dahin verändert, daß er nach dem klick das eine script startet danach 2 sec wartet und dann ein weiteres script startet, würde ich das "Problem" umgehen.
            Also das eine Script beendet die Midori session und das ander startet diese weider.
            Aber mittels mangelnder PHP Kenntnisse kann ich das leider nicht alleine umsetzen.

            mickym 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @sugram last edited by

              @sugram
              Kann kein php - aber hab mal nachgeschaut - müsste auch mit sleep(2); gehen

              https://www.w3schools.com/php/func_misc_sleep.asp

              S 1 Reply Last reply Reply Quote 0
              • S
                sugram @mickym last edited by

                @mickym

                Ja, wie gesagt kann ich auch kein PHP

                Folgendes mal einfach ausprobiert, aber ohne Erflog.

                <?php
                if ($_GET['run']) {
                  # This code will run if ?run=true is set.
                  #exec("/path/to/name.sh");
                  $script = "sudo /home/pi/midori-restart.sh";
                  sleep(3);
                  exec("sudo /home/pi/Midori-Display-start.sh");
                  $run=`$script`;
                }
                ?>
                
                <!-- This link will add ?run=true to your URL, myfilename.php?run=true -->
                
                <style type="text/css">
                
                
                a { color: #ffffff; text-decoration: none; }
                
                
                </style>
                
                
                <a href="?run=true">Display restart</a>
                
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                964
                Online

                31.7k
                Users

                79.8k
                Topics

                1.3m
                Posts

                2
                6
                382
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo