ubuntuusers.de

Rechtevergabe einer Datei im Script

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

saschaw.

Anmeldungsdatum:
13. September 2016

Beiträge: 8

Hallo, ich bin noch ziemlich neu was das Thema Linux angeht, habe aber hier im Forum schon viel nachlesen können, was mir auch geholfen hat. Jetzt bin ich aber auf ein Problem gestoßen wo ich nicht weiter komme. Und zwar habe ich ein Script erstellt (habe ich im Internet "gefunden"), was mir die CPU-Temperatur meines RaspPi in eine Log-Datei schreibt. Das Script liegt in /bin und hat die Rechte 0755. Die Daten in der Log-Datei lasse ich mir im Fhem-Server grafisch anzeigen. Soweit funktioniert es auch, aber die Log-Datei hat immer nur Rechte 0644 und mein FHEM bringt mir dann die Meldung, dass ihm der Zugriff verweigert wurde. Gebe ich der Log-Datei manuell die Rechte 0666 (eigentlich sollten Leserechte doch ausreichen?) funktioniert es. Da sich der Dateiname aber monatlich ändert, müsste ich jedes mal die Rechte manuell vergeben. Hättet ihr vielleicht eine Lösung für mich? Kann ich die Rechtevergabe im Script integrieren?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash
cpugpu_logfile="/opt/fhem/log/cpugpuTemp-$(date "+%Y-%m").log"
get_date=$(date +%d/%m/%y)
get_time=$(date +%H:%M)
cpuTemp0=$(cat /sys/class/thermal/thermal_zone0/temp | cut -d '=' -f2)
cpuTemp1=$(($cpuTemp0/1000))
cpuTemp2=$(($cpuTemp0/100))
cpuTempM=$((cpuTemp2 % $cpuTemp1))
gpuTemp=$(/opt/vc/bin/vcgencmd measure_temp | cut -d '=' -f2)
gpuTemp=`echo ${gpuTemp} | sed -e "s/'C//"`
get_date_time=$(date "+%Y-%m-%d_%H:%M:%S")
echo "${get_date_time} cpuTemp: ${cpuTemp1}.${cpuTempM}" >> $cpugpu_logfile
echo "${get_date_time} gpuTemp: ${gpuTemp}" >> $cpugpu_logfile

Würde mich freuen von jemandem zu hören. ☺ Gruß Sascha

Bearbeitet von rklm:

Syntaxhighlighting repariert. Bitte lies mal Forum/Syntax.

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

bevor du das log-File ausliest im Skript die Dateirechte mit chmod anpassen.

Gruß cflinux

saschaw.

(Themenstarter)

Anmeldungsdatum:
13. September 2016

Beiträge: 8

Hallo cflinux,

danke für deine Antwort. Hast du vielleicht ein Beispiel wie ich das in einem Script mache?

Gruß Sascha

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

Mit dem Skript, das du gepostet liest du das log File ein und verarbeitest dann die Daten weiter.

1
2
3
4
5
6
7
8
9
#!/bin/bash

cpugpu_logfile="/opt/fhem/log/cpugpuTemp-$(date "+%Y-%m").log"

# vor dem lesen der Daten die Rechte anpassen
chmod 666 $cpugpu_logfile

get_date=$(date +%d/%m/%y)
get_time=$(date +%H:%M)

Gruß cflinux

Bearbeitet von rklm:

Syntax

saschaw.

(Themenstarter)

Anmeldungsdatum:
13. September 2016

Beiträge: 8

Hallo,

jetzt seh ich es schon etwas klarer ☺ Es hat auch soweit funktioniert. Aber wenn ich jetzt zwei Dateien mit unterschiedlichen Monatsbezeichnungen im Ordner liegen habe, wovon ich bei der ersten die Rechte mit dem Script schon umgestellt habe, dann macht er es bei der zweiten nicht mehr...

Gruß Sascha

cflinux

Anmeldungsdatum:
14. Januar 2013

Beiträge: 685

Hallo

Es wird wahrscheinlich beim Monatswechsel passieren. Entweder du manipulierst das Monat für einen 2 Aufruf, oder nimmst den Holzhammer in der Form

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 #!/bin/bash
 
 cpugpu_logfile="/opt/fhem/log/cpugpuTemp-$(date "+%Y-%m").log"
 cpugpu_logfileNeuesMonat="/opt/fhem/log/cpugpuTemp-$(date "+%Y-%m").log"
 
 # vor dem lesen der Daten die Rechte anpassen
 chmod 666 $cpugpu_logfile
 chmod 666 $cpugpu_logfileNeuesMonat
 
 # dient nur zum Rechte ändern
 holzhammer="/opt/fhem/log/cpugpuTemp-*"
 chmod 666 $holzhammer

 get_date=$(date +%d/%m/%y)
 get_time=$(date +%H:%M)

Beim Holzhammer ist zu beachten, das du nicht versehentlich andere Dateien im Pfad mit änderst.

Gruß cflinux

saschaw.

(Themenstarter)

Anmeldungsdatum:
13. September 2016

Beiträge: 8

Hallo,

ich habe jetzt noch was getestet und es ist so wie du schreibst, es passiert nur beim Monatswechsel. Das Problem ist, dass beim ersten schreiben in die Datei, die zuerst noch erstellt wird und deshalb kann er die Rechte nicht vergeben, da es die Datei ja eigentlich noch nicht gibt (hoffe ich habe es verständlich geschrieben ☺ ). Sobald der zweite Wert in die Datei geschrieben wird, werden die Rechte geändert. Vielleicht werde ich in einem zweiten Script (vielleicht geht das ja auch im gleichen Script) zuerst die Datei anlegen und dann erst dort rein schreiben. Vielen Dank für deine Hilfe ☺

Gruß Sascha

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

saschaw. schrieb:

... Vielleicht werde ich in einem zweiten Script (vielleicht geht das ja auch im gleichen Script) zuerst die Datei anlegen und dann erst dort rein schreiben.

Dafür brauchst Du ja nun kein extra Skript !
Schreib einfach ein touch "$cpugpu_logfile" vor die chmod- Zeile, und fertig.

LG,

track

saschaw.

(Themenstarter)

Anmeldungsdatum:
13. September 2016

Beiträge: 8

Super, vielen Dank für Hilfe ☺

Gruß Sascha

Antworten |