Rückgabe von Shellscript unterdrücken

Begonnen von accessburn, 25 Januar 2018, 08:06:20

Vorheriges Thema - Nächstes Thema

accessburn

Morsche,

ich lasse ein Shellscript ausführen per Notify und die Antwort davon spamt mir das Log voll. Kann ich das irgendwie verhindern?

{system("sudo bash /opt/fhem/tuirgendwas.sh")}
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

enno

Moin

{system("sudo bash /opt/fhem/tuirgendwas.sh");;return undef}

geht es damit?
Einfacher FHEM Anwender auf Intel®NUC mit Proxmox und Debian

kadettilac89

leite die Ausgabe in /dev/null um ...

Was du genau sehen und was umleiten willst kannst du steuern ... siehe Link

https://wiki.ubuntuusers.de/Shell/Umleitungen/

Wernieman

1. Kannst Du eine Ausgabe eines Scriptes (oder der Befehle innerhalb des Scriptes) auf Shell-Ebene per Ausgabeumleitung ins "Nirvana" Schicken:
-> TollesScript.sh >/bin/bash
2. Warum rufst Du Dein Script über Bash auf, anstatt direkt?
-> sudo /opt/fhem/tuirgendwas.sh
2.b Falls das nicht funktioniert, hast Du im Script die Wichtige #! Zeile vergessen:
-> #!/bin/bash
3. Warum gehst Du über die Perl Ebene, anstatt direkt das Script zu starten (am besten "non-blocking"
Siehe auch https://forum.fhem.de/index.php/topic,79381.msg714129.html#msg714129
-> "sudo /opt/fhem/tuirgendwas.sh"
4. Brauchst Du wirklich sudo-Rechte? Vor allem gleich über das Komplette Script?
-> Besser innerhalb des Scriptes nur die benötigten Befehle per sudo starten!

Edit:
Andere waren schneller, nur habe ich mir solche Mühe gemacht ... ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

kadettilac89

Zitat von: enno am 25 Januar 2018, 08:52:29
geht es damit?

Vermutlich nicht, irgend welche Befehle im Script schreiben was in die Konsole oder Standardausgabe, das kommt dann in das FEhm-Log ... ohne Zeitstempel. Wenn ich den TE richtig verstehe ...

accessburn

>/dev/null hört sich gut an, und ja das #! fehlte tatsächlich, ging vergessen.
Ich teste das mal heute Abend durch. Sollte eigentlich klappen da wget nur eine URL pingen soll und mich die Ausgabe nicht die Bohne interessiert :-)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

kadettilac89

Zitat von: accessburn am 25 Januar 2018, 09:53:42
>/dev/null hört sich gut an, und ja das #! fehlte tatsächlich, ging vergessen.
Ich teste das mal heute Abend durch. Sollte eigentlich klappen da wget nur eine URL pingen soll und mich die Ausgabe nicht die Bohne interessiert :-)

OK, Sinnhaftigkeit mal außer Acht gelassen, Cronjob drekt auf OS o. ä. .... Wenn du Verfügbarkeit eines Servers prüfen willst ist das PRESENCE Modul vielleicht die bessere Wahl.

accessburn

#7
Zitat von: kadettilac89 am 25 Januar 2018, 10:02:35
OK, Sinnhaftigkeit mal außer Acht gelassen, Cronjob drekt auf OS o. ä. .... Wenn du Verfügbarkeit eines Servers prüfen willst ist das PRESENCE Modul vielleicht die bessere Wahl.

Ne, der Pingt mehrere Devices von mir an. Hat was mit WakeUp zu tun. Und da ich das ebenfalls von Hand auslösen möchte muss es wohl so gehen. Ist jetzt nicht wirklich tragisch alles. Das .sh liegt im FHEM-Verzeichnis, wird mit gesichert und alles. Es soll halt einfach nur da sein und auf Wunsch startbar sein. Und da ein AT noch darauf greift rollt mir pro Call des .sh ein paar "ok." in den Log. Nervig :-D

Aber es scheint zu gehen bisher, heute abend mal alles antesten wenn ich auch die möglichkeit habe das Gerät mal physisch lahm zu legen.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

kadettilac89

Zitat von: accessburn am 25 Januar 2018, 10:09:45
Aber es scheint zu gehen bisher, heute abend mal alles antesten wenn ich auch die möglichkeit habe das Gerät mal physisch lahm zu legen.

OK, wenn es bis jetzt funktioniert hat gehts mit Umleitung wahrscheinlich am schnellsten ... Wernieman hatte auch etwas angebracht ... Blocking. Wenn du das Script mit "&" im Hintergrund startest dürfte es nicht blocken.

Es gibt das WOL Modul, damit kannst du per "set <WOL-Device> refresh" auch pingen. Zusätzlich auch aufwecken wenn du das brauchen würdest. Nur so als Hinweis.

Wernieman

Mit "" gestartet, sollte es "non blocking" sein.

Aber ... warum braucht wget bei Dir sudorechte??????
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

accessburn

Ehrlich gesagt hab ich über mit und ohne sudo gar nicht nachgedacht ob es auch ohne geht?
Macht das denn einen unterschied? Ich hatte es von Anfang an mit eingefügt ohne groß drüber nach zu denken.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Wernieman

Bitte nicht falsch Verstehen:
"ohne groß drüber nach zu denken."
Das ist das größte Sicherheitsproblem von allen.

Du hast wahrscheinlich in Deiner sudo so etwas stehen:
fhem ALL=(ALL) ALL
Und startest alle Scripte über sudo. Damit könntest Du fhem gleich unter root laufen lassen, mit allen negativen Begleiterscheinungen (was im Standard bekanntlich umgebogen wird). Der User fhem sollte wirklich nur die Berechtigungen haben, die er braucht. Und generelle Sudorechte sind ..... "nicht optimal"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html