Wie ausführbares Script lokal aufrufen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Wie ausführbares Script lokal aufrufen

    Hallo zusammen,

    wäre super wenn mir jemand sagen kann, wie ich ein ausführbares Script (aus .c Datei erstellt) aufrufen kann.
    Das brauche ich leider um meine speziellen Steckdosen anzusteuern.

    Was muss ich bei "Kommando an" eintrage. Mein Verzeichnis ist "/home/pi/WiringPi/xxx/script"

    Wäre toll wenn das jemand beantworten könnte. Leider habe ich zum Aufruf von Skripten hier nichts brauchbares gefunden.
    Vielen Dank!
  • also ich kenne .c-Dateien nur als C++ Soucecode-Dateien. Normalerweise gehört da noch eine .h (header) datei dazu.
    Beides kann man dann mittels gcc compilieren, und erhält dann erst eine ausführbare Datei.

    Eine Scriptsprache die .c-Dateien erstellt ist mir nicht bekannt. (Sofern mir da nichts entgangen ist)
    Gruß Dieter
    --------------
    Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  • Wie ausführbares Script lokal aufrufen

    DieterWo wrote:

    also ich kenne .c-Dateien nur als C++ Soucecode-Dateien. Normalerweise gehört da noch eine .h (header) datei dazu.
    Beides kann man dann mittels gcc compilieren, und erhält dann erst eine ausführbare Datei.

    Eine Scriptsprache die .c-Dateien erstellt ist mir nicht bekannt. (Sofern mir da nichts entgangen ist)


    Hallo, sorry Vlt. Habe ich mich falsch ausgedrückt. Ich habe ein c Script kompiliert und eine ausführbare Datei erstellt. Ist mit ./Script in der Konsole ausführbar.

    Wie kann ich diese per SHC ausführen. Was muss im Kommando stehen?


    Gesendet von iPhone mit Tapatalk
  • Ohne es probiert zu haben, sollte es sich genauso ausführen lassen, wie in der Konsole.
    Du mußt den die auszuführende Datei in die sudoers aufnehmen.

    Wenn man also sowas wie "/home/pi/ausführbaredatei Parameter1 Parameter2" ausführen lassen wollte, dann müsste /home/pi/ausführbaredatei in die sudoers.
    Wenn man aber z.B. ein Script ausführt wie z.B. /home/pi/machwas.py dann muss nicht Python in die sudoers sondern eben /home/pi/machwas.py, wie man das ja auch während der Installation von SHC schon mit der bmp.py und dht.py macht.
    (Ohne das jetzt ganz genau zu wissen, würde ich das aber genau so interpretieren)

    Du drückst dich nicht wirklich unmissverständlich aus.
    Scripte nennt man in der Regel die Quellcodedateie für Scriptsprachen.Python wäre z.B. eine Scriptsprache.
    Ansonsten gibt es z.B. C++-Quellcode, der kompiliert dann eine ausführbare Datei (Programm) erstellt, die eben ohne Interpreter ausführbar ist.
    Wenn du also schreibst:

    humpl wrote:

    Ich habe ein c Script kompiliert und eine ausführbare Datei erstellt. Ist mit ./Script in der Konsole ausführbar.
    Dann weiß ich nicht, ob du jetzt C++ kompilierts und hinterher eine Datei namens "Script" hat, oder ob du jetzt unter ./Script wirklich ein Script liegen hast.
    Gruß Dieter
    --------------
    Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  • Wie ausführbares Script lokal aufrufen

    DieterWo wrote:

    Ohne es probiert zu haben, sollte es sich genauso ausführen lassen, wie in der Konsole.
    Du mußt den die auszuführende Datei in die sudoers aufnehmen.

    Wenn man also sowas wie "/home/pi/ausführbaredatei Parameter1 Parameter2" ausführen lassen wollte, dann müsste /home/pi/ausführbaredatei in die sudoers.
    Wenn man aber z.B. ein Script ausführt wie z.B. /home/pi/machwas.py dann muss nicht Python in die sudoers sondern eben /home/pi/machwas.py, wie man das ja auch während der Installation von SHC schon mit der bmp.py und dht.py macht.
    (Ohne das jetzt ganz genau zu wissen, würde ich das aber genau so interpretieren)

    Du drückst dich nicht wirklich unmissverständlich aus.
    Scripte nennt man in der Regel die Quellcodedateie für Scriptsprachen.Python wäre z.B. eine Scriptsprache.
    Ansonsten gibt es z.B. C++-Quellcode, der kompiliert dann eine ausführbare Datei (Programm) erstellt, die eben ohne Interpreter ausführbar ist.
    Wenn du also schreibst:

    humpl wrote:

    Ich habe ein c Script kompiliert und eine ausführbare Datei erstellt. Ist mit ./Script in der Konsole ausführbar.
    Dann weiß ich nicht, ob du jetzt C++ kompilierts und hinterher eine Datei namens "Script" hat, oder ob du jetzt unter ./Script wirklich ein Script liegen hast.


    Hi Dieter,

    Ich habe eine ausführbare Datei gemeint welche ich erstellt habe.

    Benötige ich die Endung .sh oder weglassen?

    sudoers sieht so aus: (habe mit und ohne .sh probiert)

    #Meine Anpassung:
    www-data ALL = NOPASSWD: /opt/rcswitch-pi/send
    www-data ALL = NOPASSWD: /usr/local/bin/pilight-send
    www-data ALL = NOPASSWD: /sbin/reboot, /sbin/halt
    www-data ALL = NOPASSWD: /sbin/iwconfig
    www-data ALL = NOPASSWD: /var/www/shc/shc/lib/external/python/dht.py
    www-data ALL = NOPASSWD: /var/www/shc/shc/lib/external/python/bmp.py
    www-data ALL = NOPASSWD: /home/pi/wiringPi/socketma/mumbi_a_an
    www-data ALL = NOPASSWD: /home/pi/wiring/Pi/socketma/mumbi_a_an.sh
    www-data ALL = NOPASSWD: /usr/local/bin/mumbi_a_an


    Und im SHC Kommando trage ich ein:
    sudo ./home/pi/wiringPi/socketma/mumbi_a_an
    -> stimmt das so???

    Was mich eher noch irritiert ist (sorry bin Linux-Neuling):

    wenn ich im Verzeichnis der Datei bin kann ich mit der Konsole die Datei mit "./mumbi_a_an" ausführen.
    >> Das geht aber nicht:
    pi3:~ $ sudo ./home/pi/wiringPi/socketma/mumbi_a_an
    sudo: ./home/pi/wiringPi/socketma/mumbi_a_an: Kommando nicht gefunden
    Ist das der Grund und was ist falsch???

    Gesendet von iPhone mit Tapatalk

    The post was edited 2 times, last by humpl ().

  • Damit Linux Dateien und Programme in der Konsole unterscheiden kann, muss unter Linux für Programme ein Pfad angegeben werden.
    Unter Linux gibt es dafür 3 Zeichen(-ketten), die für Ordner stehen.
    Es gibt einmal dem Punkt, der für den momentanen Pfad steht.
    Als Beispiel: ./datei steht für "momentanes Arbeitsverzeichnis"/datei
    Dann gibt es den doppelten Punkt. Der steht für das Oberverzeichnis.
    Wenn du dich in /var/www befindest und "cd .." ausführst, bist du im Oberverzeichnis, also in /var

    Als drittes gibt es noch den Slash, welcher den obersten Ordner bezeichnet. Wenn du nen Slash am Anfang eines Pfades hast, wird automatisch der restliche Pfad vom obersten Ordner aus gesehen.
    Sonst ist der Slash als Trennzeichen für Ordner da.

    Also wenn du sagst, dass du ./home/pi/datei ausführen willst, geht das vom aktuellen Verzeichnis aus und das ist ja offensichtlich falsch. In /var/www/shc (da arbeitet das shc) existiert dieser Ordner und diese Datei nicht.

    Also legst du als Kommando an: /home/pi/wiringPi/socketma/mumbi_a_an

    Das ist der Grund, dass es nicht funktioniert
  • humpl wrote:

    Ich habe eine ausführbare Datei gemeint welche ich erstellt habe.

    Benötige ich die Endung .sh oder weglassen?

    sudoers sieht so aus: (habe mit und ohne .sh probiert)

    #Meine Anpassung:
    www-data ALL = NOPASSWD: /opt/rcswitch-pi/send
    www-data ALL = NOPASSWD: /usr/local/bin/pilight-send
    www-data ALL = NOPASSWD: /sbin/reboot, /sbin/halt
    www-data ALL = NOPASSWD: /sbin/iwconfig
    www-data ALL = NOPASSWD: /var/www/shc/shc/lib/external/python/dht.py
    www-data ALL = NOPASSWD: /var/www/shc/shc/lib/external/python/bmp.py
    www-data ALL = NOPASSWD: /home/pi/wiringPi/socketma/mumbi_a_an
    www-data ALL = NOPASSWD: /home/pi/wiring/Pi/socketma/mumbi_a_an.sh
    www-data ALL = NOPASSWD: /usr/local/bin/mumbi_a_an
    Allein die Frage ob die Endung nun .sh heißen soll, zeigt mir, dass du dich wohl noch etwas mehr mit Linux befassen solltest.

    .sh sollte bei Shell-Scripten prizipiell verwendet. Es geht zwar auch ohne, aber ich persönlich finde es sollte zwingend sein.
    Bei wirklich kompilierten, ausführbaren Programmen hat die Endung .sh nix verloren.

    Man kann nun einem Shellscript mit chmod +x natürlich das Flag executable verpassen. Dann weiß Console (welche selbst ja auch eine shell ist) schon mal, dass sie dieses script ausführen kann.

    Wenn du also hier im Forum was schreibst, dann ist es für alle Beteiligten besser, wenn sie sehen, wovon du redest.
    Desweiteren erstkennt man dann auch in der sudoers was was überhaupt ist.
    send, pilight-send, halt und iwconfig sind schon mal programme. .py und .sh ist auch selbsterklärend.
    Bei dem drittletzten und dem letzten Eintrag kann ich das jetzt aber nicht mehr erkennen, was das nun sein soll.
    Gruß Dieter
    --------------
    Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  • Hallo zusammen,

    Ich würde mich gerne mal hier anschließen und fragen, ob jemand meinen Denkfehler findet.

    Habe zwei python scripte:

    Das steht in den Script ./Leinwand_an.py

    Source Code

    1. python /home/pi/domoticz/scripts/milight-home.py CMD "31 00 00 08 04 01 00 00 00" 00

    und das hier steht in ./Leinwand_aus.py

    Source Code

    1. python /home/pi/domoticz/scripts/milight-home.py CMD "31 00 00 08 04 01 00 00 00" 00

    Wenn ich eine der folgenden Zeilen in die Shell eingebe, dann geht entweder das Licht an oder aus.
    Es funktioniert ohne sudo, wobei ich es auch mit und ohne probiert have, sowohl innerhalb des Scripts als als auch den Aufruf aus SHC herraus.
    Es funktioniert einfach nicht.

    Source Code

    1. /home/pi/domoticz/scripts/leinwand_an.py
    2. /home/pi/domoticz/scripts/leinwand_aus.py
    3. /home/pi/domoticz/scripts/leinwand_an.sh
    4. /home/pi/domoticz/scripts/leinwand_aus.sh
    sudo visudo habe ich auch angepasst, habe es auch mit .sh scripten probiert in denen dann das python gestartet wird.
    Ebenso mit und ohne sudo.
    Es klappt immer ausserhalb von SHC, sobald ich ein schaltbares Element erstelle,
    und bei der an oder aus Funktion die Scripte versuche zu starten passiert genau gar nichts.

    Ich muss doch im SHC in den Feld nur so eine Zeile eintragen oder?
    /home/pi/domoticz/scripts/leinwand_an.py
    Egal ob so oder
    sudo /home/pi/domoticz/scripts/leinwand_an.py
    so, es will nicht, aber alleine klappt es immer.

    Es ist zum verzweifleln, da ist so nah dran und es will einfach nicht.

    Was habe ich vergessen? Wo ist mein Fehler, Hilfe :)
  • Microgamer wrote:

    Du musst noch das python davor schreiben. Sonst weiß die shell nicht, mit welchem Programm du das öffnen willst

    Gesendet von meinem MotoG3 mit Tapatalk
    Sorry, hab ich nicht dazu gesagt, auch das hatte ich schon probiert.
    Deswegen habe ich ja sogar sowas gebaut:

    Shell-Script

    1. #!/bin/sh
    2. sudo python /home/pi/domoticz/scripts/milight-home.py CMD "31 00 00 08 04 02 00 00 00" 00
    und als leinwand_an.sh bzw. leinwand_aus.sh gespeichert und ausführbar gemacht.
    Geht auch wunderbar ohne SHC... :(