Einfach in eine Datei umleiten:
Code: Alles auswählen
sudo npm outdated -g > DATEI
Code: Alles auswählen
sudo npm outdated -g > DATEI
statt dessen das Ergebnis einfügt. Wenn es so überhaupt gehttext="Hello World"
Code: Alles auswählen
sudo npm outdated -g | curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="Hello World"
Code: Alles auswählen
curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="$(sudo npm outdated -g)"
Code: Alles auswählen
echo `/bin/ls`
Code: Alles auswählen
echo $(cat $(find /home/scientific/ -type f))
Ja, stimmt. Aber die alte logwatch-Zeile, die du entfernt hast, die hat Leerzeichen erzeugt. Aber gut, die alten Dateien scheinen weg zu seinNastra hat geschrieben:27.03.2018 08:13:30Also der Dateiname von der erzeugten Datei sieht so aus und enthält keine Leerzeichen:
Ja, genau das meinte ich.Nastra hat geschrieben:27.03.2018 08:13:30Wie meinst du das genau, also wenn ich als User Pi einen Befehl eingebe mit sudo xxxxx geht es ohne Pw.
Code: Alles auswählen
/usr/bin/sudo /usr/sbin/logwatch --output file --filename $filename
Code: Alles auswählen
/usr/bin/find /home/pi/logwatch/* -mtime +1 -exec /bin/rm -f {} \;
Code: Alles auswählen
/bin/mkdir -p ~/logwatch
Himmel, ist die man page von curl lang ...Nastra hat geschrieben:27.03.2018 13:16:51statt dessen das Ergebnis einfügt. Wenn es so überhaupt geht
Code: Alles auswählen
sudo npm outdated -g | curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d text="Hello World"
Code: Alles auswählen
sudo npm outdated -g | curl -s -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<CHAT_ID> -d @-
Code: Alles auswählen
Mär 27 17:19:06 HomeBridgeServer systemd[1]: Starting logwatch.service...
Mär 27 17:19:06 HomeBridgeServer sudo[18646]: pi : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/logwatch --output file --filename /home/pi/logwatch/2018-03-27-logwatch.txt
Mär 27 17:19:06 HomeBridgeServer sudo[18646]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mär 27 17:19:24 HomeBridgeServer sudo[19000]: pi : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/npm outdated -g
Mär 27 17:19:24 HomeBridgeServer sudo[19000]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mär 27 17:19:36 HomeBridgeServer systemd[1]: Started logwatch.service.
Code: Alles auswählen
[Unit]
Description=logwatch.service
Wants=network.target
[Service]
User=pi
Type=oneshot
ExecStart=/bin/bash /usr/local/bin/logwatch.sh
[Install]
WantedBy=multi-user.target
Code: Alles auswählen
#!/bin/bash
############### Vorgaben Skript ###############
/bin/mkdir -p ~/logwatch
day=$(date +%Y-%m-%d)
filename=/home/pi/logwatch/$day-logwatch.txt
############### Telegram Config ##############
######## Token und Chat ID ausfüllen #########
token=
chat_id=
############### Logdatei erstellen ###############
/usr/bin/sudo /usr/sbin/logwatch --output file --filename $filename
############### Logdatei versenden ###############
/usr/bin/curl -F chat_id="$chat_id" -F document=@"$filename" https://api.telegram.org/bot$token/sendDocument >/dev/null 2>&1
############### Logdatei löschen die älter als +1 Tage sind ###############
/usr/bin/find /home/pi/logwatch/* -mtime +1 -exec /bin/rm -f {} \;
############### Plugin Update Check ###############
/usr/bin/curl -s -X POST https://api.telegram.org/bot$token/sendMessage -d chat_id="$chat_id" -d text="Verfuegbare Updates: $(sudo npm outdated -g)"
Ich hab dir eh Beispiele aufgeschrieben. Backtick lässt sich googlen.... Aber ich mach es für dich:Nastra hat geschrieben:27.03.2018 17:29:16@scientific
Danke für die Erklärung, was sind Backticks und was meinst du mit verschachtelungen genau.
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:27.03.2018 17:29:16Hey NAB, habe es gerade getestet. Klappt leider nicht. Er sendet mir die Nachricht die ich eingebaut habe aber nicht mehr die Datei.
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.Nastra hat geschrieben:27.03.2018 17:29:16Edit: sudo bash logwatch.sh funktioniert aus dem Terminal Nachricht und Datei kommen an.
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.
Code: Alles auswählen
############### Logdatei erstellen ###############
/usr/bin/sudo /usr/sbin/logwatch --output file --filename $filename
/usr/bin/sudo /bin/chown pi:pi $filename
Ja, wie sieht denn das aus, was nicht funktioniert?Nastra hat geschrieben:27.03.2018 17:29:16Noch 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?
Ging auch nicht gerade probiert.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.
Jo da ist er.Du müsstest jetzt übrigens den Ordner /root/logwatch erzeugt haben
Denke auch das es so einfacher für mich istwir lassen diese Versuche, es als Benutzer "pi" laufen zu lassen
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)"
Du verwendest noch apt-get. Seit Stretch wird eigentlich empfohlen, "apt" zu verwenden ... bei deinem Raspberry Pi Debian auch?Nastra hat geschrieben:28.03.2018 09:10:26Eine 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