Sida 1 av 1

script för loggning av sensors med crontabs

Postat: 31 aug 2012, 17:30
av jofors200
Jag har problem med ett script som skall logga temperaturer på CPU och HDD till en fil kontinuerligt.

scriptet ser ut så här :

------

#!/bin/bash

log=/home/autostart/coretemps.log

echo '------------------------------------------------------------------------------------' >> $log
echo `date` -- `sensors | grep 'Core 0'` >> $log
echo `date` -- `sensors | grep 'Core 1'` >> $log
echo `date` -- `hddtemp /dev/sda ` >> $log

------

när jag kör scriptet som 'sudo', så funkar allt som det ska och jag får data i min loggfil enligt :

*****
------------------------------------------------------------------------------------
fre 31 aug+ 2012 16.40.+13 CEST -- Core 0: +85.0°C (high = +78.0°C, crit = +100.0°C)
fre 31 aug+ 2012 16.40.+13 CEST -- Core 1: +84.0°C (high = +78.0°C, crit = +100.0°C)
fre 31 aug+ 2012 16.40.+13 CEST -- /dev/sda: ADATA SX900: 38°C
*****

Men när crontab kör skriptet saknas uppgifterna och bara date-info finns med :

*****

------------------------------------------------------------------------------------
fre 31 aug+ 2012 16.45.+01 CEST --
fre 31 aug+ 2012 16.45.+01 CEST --
fre 31 aug+ 2012 16.45.+01 CEST --

*****

Är det någon som vet vad detta beror på och vad jag kan göra för att fixa det?

Re: script för loggning av sensors med crontabs

Postat: 31 aug 2012, 19:13
av ubot
Det mest sannolika är väl att hddtemp och sensors kräver sudo för att fungera? Vad händer om du kör sensors och hddtemp-kommandona i Terminalen utan sudo? Får du något resultat då eller måste du använda sudo för att få något resultat av kommandona? Testa också att köra sensors i verbose-läge, t.ex. med flaggan -u (-u Raw output. This mode is only meant for debugging.).
Om kommadona kräver sudo så kan du lägga in skriptet som ett root cron job med sudo crontab -e eller så kan du ändra så att din användare får köra sensors och hddtemp utan sudo i sudoers file.

Re: script för loggning av sensors med crontabs

Postat: 31 aug 2012, 19:19
av mcNisse
job som körs i crontab körs med en mycket begränsad miljö.

Ett enkelt sätt att fixa till skriptet är att skriva in hela sökvägen till programnamnet.
Du kan enkelt hitta fullständiga namn med which

Kod: Markera allt

which hdhtemp
which sensors
which grep
Eller så ser du till att PATH variabeln innehåller det du behöver.

Re: script för loggning av sensors med crontabs

Postat: 31 aug 2012, 20:45
av jofors200
Tack mcNisse!

Det var precis så, kommandona hittades inte. jag har modifierat skriptet och nu funkar det :-)


Modifierat script :



#!/bin/bash

log=/home/autostart/systemps.log

echo '------------------------------------------------------------------------------------' >> $log
echo `date` -- `/usr/local/bin/sensors | /bin/grep 'Core 0'` >> $log
echo `date` -- `/usr/local/bin/sensors | /bin/grep 'Core 1'` >> $log
echo `date` -- `/usr/sbin/hddtemp /dev/sda` >> $log

Re: script för loggning av sensors med crontabs

Postat: 31 aug 2012, 20:46
av ubot
Om mcNisse har rätt så spelr det väl knappast någon roll om skriptet körs med sudo eller inte heller?

Re: script för loggning av sensors med crontabs

Postat: 31 aug 2012, 20:56
av jofors200
Tack för tipset ubot. Jag kör scriptet med root, men hade gärna gjort det med en annan användare. Jag testade ditt förslag med sudoers och lade till raden (sensors kräver ej root) :

%admin ALL=(ALL)NOPASSWD:/usr/sbin/hddtemp

i filen /etc/sudoers, men det gick inte, fick fortfarande fel vid när jag kör kommandot "hddtemp /dev/sda" :
/dev/sda: open: Åtkomst nekas

Re: script för loggning av sensors med crontabs

Postat: 01 sep 2012, 01:49
av ubot
Om du byter ut %admin mot username för den som ska köra skriptet då? Testade du att starta om efter ändringarna?

Re: script för loggning av sensors med crontabs

Postat: 01 sep 2012, 06:50
av johanre
Mest för att tydliggöra vad ubot skrev ovan: antingen så ser du till att den användaren du kör cron jobbet som, finns med i gruppen "admin" (kolla i /etc/group), eller så ändrar du raden i /etc/sudoers så det står:

jofors200 ALL=(ALL)NOPASSWD:/usr/sbin/hddtemp

(Självklart så byter du ut "jofors200" mot användarnamnet du kör det hela som)