Gelöst! Problem beim Skript ausführen mit ExecStartPost

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von NAB » 27.03.2018 21:43:04

Nastra, hast du in deinem vorletzten Posting vielleicht Daten drin, die du nicht veröffentlichen möchtest?
Nastra hat geschrieben: ↑ zum Beitrag ↑
27.03.2018 17:29:16
Hey NAB, habe es gerade getestet. Klappt leider nicht. Er sendet mir die Nachricht die ich eingebaut habe aber nicht mehr die Datei.
Das klingt, als ob er die Datei einfach nicht lesen kann. "Eigentlich" sollte root Dateien erzeugen, die für jeden lesbar sind, das kann man aber mit der UMASK ändern.
Nastra hat geschrieben: ↑ zum Beitrag ↑
27.03.2018 17:29:16
Edit: sudo bash logwatch.sh funktioniert aus dem Terminal Nachricht und Datei kommen an.
Logisch ... mit "sudo" führst du das Script ja wieder als root aus, und als root ging es schon die ganze Zeit. Die Frage ist, ob es auch ohne sudo funktioniert.

Du müsstest jetzt übrigens den Ordner /root/logwatch erzeugt haben, falls die Zeile mit dem /bin/mkdir schon drin war.
Nastra hat geschrieben: ↑ zum Beitrag ↑
27.03.2018 17:29:16
Das Ordner anlegen geht auch nicht
Ja, hast du den Ordner wieder gelöscht? Falls ja, ist das logisch, wenn du das Script mit sudo startest. Dann läuft das Script als root und aus ~/logwatch wird /root/logwatch. Wenn das Script als "pi" läuft, wird aus ~/logwatch ein /home/pi/logwatch.

Wir versuchen jetzt mal, das Problem mit dem Hammer zu erschlagen:

Code: Alles auswählen

############### Logdatei erstellen ###############
/usr/bin/sudo /usr/sbin/logwatch --output file --filename $filename
/usr/bin/sudo /bin/chown pi:pi $filename
(die letzte Zeile ist neu und ändert den Besitzer der Datei einfach auf "pi". Der Rest bleibt gleich)

Aber wie ich sehe, hast du mit npm gleich die nächste Neuerung eingebaut. Wenn sich das Script weiterhin so schnell ändert, schlage ich vor, wir lassen diese Versuche, es als Benutzer "pi" laufen zu lassen, das ganze sudo wird sonst zu unübersichtlich und schafft eher neue Fehlerquellen als das es vor Fehlern schützt. Ich weiß zum Beispiel nicht mal, ob npm überhaupt als root laufen muss.
Nastra hat geschrieben: ↑ zum Beitrag ↑
27.03.2018 17:29:16
Noch eine Frage zu dem Befehl der das Dokument Versendet, ich würde gerne hier noch eine Beschreibung zu dem Dokument also einen Text in die gleiche Nachricht einfügen. Habe im Netz das hier gefunden und ausprobiert, funktioniert aber nicht die Lösung. Hat da noch einer eine Idee wie man das umbauen müsste?
Ja, wie sieht denn das aus, was nicht funktioniert?
Die Telegram API kennt zumindest "caption":
https://core.telegram.org/bots/api#senddocument
Und schau dir mal dieses Script an:
https://github.com/NicolasBernaerts/deb ... ram-notify
im unteren Teil setzt er die ganzen Befehle ab, da scheint es auch mit "caption" zu klappen.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Nastra
Beiträge: 94
Registriert: 13.02.2018 05:12:27

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von Nastra » 27.03.2018 22:02:07

Danke für denn Hinweis :wink:
Logisch ... mit "sudo" führst du das Script ja wieder als root aus, und als root ging es schon die ganze Zeit. Die Frage ist, ob es auch ohne sudo funktioniert.
Ging auch nicht gerade probiert.
Du müsstest jetzt übrigens den Ordner /root/logwatch erzeugt haben
Jo da ist er.
wir lassen diese Versuche, es als Benutzer "pi" laufen zu lassen
Denke auch das es so einfacher für mich ist :THX:


Denn Link bei GitHub werde ich mir morgen genauer anschauen. Habe selber auch noch ein zwei Sachen gefunden dazu. Die API hatte ich auch schon gesichtet. Konnte aber nicht viel damit anfangen außer das was du auch sagts das es die Funktion kennt. Ich werde berichten. Danke für die Mühe.
Zuletzt geändert von Nastra am 28.03.2018 10:14:42, insgesamt 2-mal geändert.

Nastra
Beiträge: 94
Registriert: 13.02.2018 05:12:27

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von Nastra » 28.03.2018 09:10:26

Guten Morgen,

@NAB habe es hinbekommen das die Datei und Text zusammen versendet werden :THX: .
Bei Erfolgserlebnissen kann das ja richtig Spass machen :mrgreen:
Musste es nochmal erweitern 8)

Nochmal Danke an alle die geholfen haben :hail:

Hier das Ergebnis:

Code: Alles auswählen

#logwatch.sh
#!/bin/bash

############################## Vorgaben Skript ##############################

day=$(date +%Y-%m-%d)
filename=/home/pi/logwatch/$day-logwatch.txt
/bin/mkdir -p ~/logwatch

############################## Nachrichten Text ##############################
######### Achtung! Keine Leerzeichen verwenden bei Nachrichten Text ##########

#Logdatei versenden
nachricht1=Systemzusammenfassung:

#Update prüfen npm 
nachricht2=Verfügbare-Updates-npm:

#Update prüfen Firmware
nachricht3=Verfügbare-Updates-Firmware:


############################## Telegram Config ###############################
######################## Token und Chat ID ausfüllen #########################

token=
chat_id=



############################# Logdatei erstellen #############################

/usr/sbin/logwatch --output file --filename $filename



############################## Logdatei versenden ############################

/usr/bin/curl -F chat_id="$chat_id" -F document=@"$filename" -F caption="$nachricht1" https://api.telegram.org/bot$token/sendDocument >/dev/null 2>&1



################# Logdatei löschen die älter als +7 Tage sind ################

/usr/bin/find /home/pi/logwatch/* -mtime +7 -exec /bin/rm {} \;



############################## Update prüfen npm #############################

/usr/bin/curl -s -X POST https://api.telegram.org/bot$token/sendMessage -d chat_id="$chat_id" -d text="$nachricht2 
$(sudo npm outdated -g)"



########################### Update prüfen Firmware ###########################

/usr/bin/curl -s -X POST https://api.telegram.org/bot$token/sendMessage -d chat_id="$chat_id" -d text="$nachricht3 
$(sudo JUST_CHECK=1 rpi-update)"


Eine Frage habe ich noch, ist es möglich die normalen Paket Updates/ Aktualisierungen auch abzufragen ohne das diese direkt durchgeführt werden also nur angezeigt werden? Würde das gerne auch noch mit einbauen.

sudo apt-get update
sudo apt-get upgrade

Nastra
Beiträge: 94
Registriert: 13.02.2018 05:12:27

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von Nastra » 28.03.2018 10:15:58

So sieht es in Live in Telegram nach dem ausführen aus:
https://picload.org/view/daiirgrw/ohnetitel.jpg.html

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von NAB » 28.03.2018 15:27:12

Nastra hat geschrieben: ↑ zum Beitrag ↑
28.03.2018 09:10:26
Eine Frage habe ich noch, ist es möglich die normalen Paket Updates/ Aktualisierungen auch abzufragen ohne das diese direkt durchgeführt werden also nur angezeigt werden? Würde das gerne auch noch mit einbauen.

sudo apt-get update
sudo apt-get upgrade
Du verwendest noch apt-get. Seit Stretch wird eigentlich empfohlen, "apt" zu verwenden ... bei deinem Raspberry Pi Debian auch?

apt funktioniert eigentlich genau so:
apt update
apt upgrade

Die letzte Zeile von apt update sagt bei mir gerade:
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

Nastra
Beiträge: 94
Registriert: 13.02.2018 05:12:27

Re: Problem beim Skript ausführen mit ExecStartPost

Beitrag von Nastra » 28.03.2018 16:17:21

Ohhh man, das dass get wegfällt war mir noch nicht bekannt. Wieder was gelernt.
Normalerweise führt bei mir das Tool/ Skript von einem aus dem HK Forum die Updates durch daher habe ich da nie genauer hingesehen wie der Ablauf ist. Hatte es heute morgen getestet manuell, aber da waren keine Updates vorhanden daher habe ich denn Hinweis mit dem apt list --upgradable nicht angezeigt bekommen. Aber genau das ist was ich noch brauchte.

@NAB :hail: DANKE !

Antworten