script.sh "läuft" sudo script.sh "läuft nicht"

  • Hallo,

    habe folgendes Problem:

    Script erstellt in /usr/bin

    [font="Menlo"]-rwxr-xr-x 1 root root 70 Mai 1 18:22 remotesshbildhof.sh[/font]


    [font="Menlo"]wenn ich nun in der Konsole eingebe: [/font]
    [font="Menlo"]/usr/bin $ remotesshbildhof.sh[/font]
    [font="Menlo"] % Total % Received % Xferd Average Speed Time Time Time Current[/font]
    [font="Menlo"] Dload Upload Total Spent Left Speed[/font]
    [font="Menlo"] 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0[/font]

    [font="Menlo"]macht das Script brav was es soll.[/font]

    [font="Menlo"]Gebe ich ein:[/font]
    [font="Menlo"]:/usr/bin $ sudo remotesshbildhof.sh[/font]

    [font="Menlo"]:/usr/bin $[/font]
    [font="Menlo"]passiert nichts weiter[/font]


    [font="Menlo"]Der Inhalt des Scripts ist:[/font]

    [font="Menlo"]#!/bin/bash[/font]

    [font="Menlo"]sshpass -p meinPSW ssh pi@192.168.200.115 phpbildhof.sh[/font]

    [font="Menlo"]Kann mir jemand sagen, woran das liegt.[/font]

    [font="Menlo"]Das Script remotesshbildhof ist (wie oben zu sehen) der owner root und die Gruppe root.[/font]

    [font="Menlo"]Wieso funktioniert es dann, wenn ich es ohne sudo aufrufe und mit sudo eben nicht?[/font]

    [font="Menlo"]Noch etwas Hintergrundinformation:[/font]

    [font="Menlo"]Ich weiß, es geht bestimmt eleganter, aber so habe ich es soweit mit meinen bescheidenen Kenntnissen hinbekommen.[/font]

    [font="Menlo"]Ein Python script soll beim Hochfahren mittels cronjob gestartet werden. Dieses Python script überwacht mittels Interrupt einen PIR Sensor. Löst dieser aus, wird das Script remotesshbildhof.sh aufgerufen. Dieses startet ein Script (phpbildhof.sh) mittels sshpass auf einem entfernten Raspi.[/font]

    [font="Menlo"]Auf einem parallelen System System, wo die Klingel der trigger ist, funktioniert das mit cronjob alles einwandfrei.[/font]

    [font="Menlo"]Auf dem oben benannten geht es nur ohne cronjob und nur wenn ich das Python script ohne sudo aufrufe. D.h. das Pythonscript macht noch was es soll, wenn es dann aber die remotesshbildhof.sh als subprozess aufruft, geht es nicht. Das Python script ohne sudo im Aufruf, alles funktioniert.[/font]

  • Der Interpreter "sh" ist älter als "bash" und kann weniger. Die Dateiendung sagt nichts über den Interpreter aus, entscheidend wäre der Shebang. Zum Beispiel ist "raspi-config" auch ein sh Script aber ohne Dateiendung

    Da es ohne sudo funktioniert, mit aber nicht muss man folgendes beachten:
    Wird ein Befehl oder Script mithilfe von "sudo" ausgeführt, führt man es als root aus.
    Nutzt man dann sowas wie ssh und möchte SSH-Keys verwenden, müssen diese SSH-Keys im Benutzerverzeichnis von root hinterlegt sein.... Ich weiß du willst in diesem Fall kein SSH-Key verwenden, wäre aber besser da ein SSH Password Klartext in einem Script stehen zu haben nicht besonders klug ist.

    Wenn du root bist brauchst du kein sudo. Wenn ein Benutzer das Script ohne sudo ausführen können soll dann die Rechte oder Besitzer anpassen.

    Da das Script in einem PATH Verzeichnis liegt (und Ausführrechte besitzt) muss man nicht in dem Verzeichnis sein um die Datei auszuführen (Konsolen Befehle liegen auch in einem PATH aber um zum Beispiel "ls" auszuführen musst du nicht vorher ins Verzeichnis /bin/ wechseln)


    PS: Bitte von Textformatierungen absehen und für Code stattdessen die CODE Blöcke verwenden:

    Code
    ...
    • Offizieller Beitrag

    Completly Offtopic: Heisst es wirklich der Shebang? Bei mir ist es die Shebang...wegen...she und bang..ihr wisst schon....Ja ich weiss der war schlecht, bei Gelegenheit geißele ich mich selbst :lol:

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Zitat

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Nutzt man dann sowas wie ssh und möchte SSH-Keys verwenden, müssen diese SSH-Keys im Benutzerverzeichnis von root hinterlegt sein.... Ich weiß du willst in diesem Fall kein SSH-Key verwenden, wäre aber besser da ein SSH Password Klartext in einem Script stehen zu haben nicht besonders klug ist.[/font]

    meigrafd Das war excellentes troubleshooting!!!!!!

    Fehler beseitigt mit:

    Von dem Raspi, auf welchem das script liegt einmal mit ssh root@192.168.200.115 angemeldet. Dadurch wurde der rsa Key dauerhaft gespeichert.

    Jetzt macht das script was es soll, wenn ich es mit sudo remotesshbildhof.sh aufrufe.

    Jetzt wird es auch mit dem cronjob gehen.

    Vorher hatte ich das mit ssh pi@192.168.200.115 gemacht, dadurch funktionierte das ganze ohne sudo und mit sudo nicht.

    Vielen Dank für den Hinweis. Auf sowas muss man erst einmal kommen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!