• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
in problema crontab

[Risolto] Problema in crontab
#1
Ciao a tutti, ho inserito in crontab un file .sh, dentro questo file ad un certo punto mi richiama uno script in Python e poi torna ad eseguire il resto dello script sh.
Se lo eseguo da terminale funziona tutto bene mentre il crontab esegue lo script fino al richiamo dello script in Python ma non lo esegue....

Codice:
#!/bin/sh
FILE=/home/pi/Logdsgnu.txt
now=/home/djet/grafici/$(date +"%d_%m_%Y")
#now=$(date +"%d_%m_%Y")
gnuplot -persist <<PLOT
set datafile separator ";"
set grid
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xlabel "Ora"
set ylabel "°C"
set terminal png medium
set output "temperatura_METEO109EPI.png"
set title "Temperatura Epinel $now"
plot "$FILE" using 1:(column(2)) t "Temperatura" with lines lt 1 lw 3 linecolor 2
quit
PLOT
sudo python invio_grafico.py
mkdir -m a=rwx $now &&
mv  *.png $now

In particolare lo script Python invia via mail il file .png creato dallo script Linux 
Grazie a tutti!
Risposta
#2
devi metterci la path. crontab è root come utente e avvia le cose dalla sua home, di solito /root

quindi metti tipo "python /home/utente/invio_grafico.py" e riprova

inoltre il sudo non serve, proprio perchè crontab è già root



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#3
(27/01/2018, 09:34)Painbrain Ha scritto: devi metterci la path. crontab è root come utente e avvia le cose dalla sua home, di solito /root

quindi metti tipo "python /home/utente/invio_grafico.py" e riprova

inoltre il sudo non serve, proprio perchè crontab è già root

Grazie! sembra funzionare. Mi dimentico ancora questi particolari...
Risposta
#4
Perché Python lo lanci col sudo?
Risposta
#5
se lanci crontab -e senza il sudo davanti accedi al crontab del TUO utente, e non dell'amministratore



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#6
(27/01/2018, 10:42)Zzed Ha scritto: Perché Python lo lanci col sudo?

Perché non eseguiva e quindi ho provato a mettergli il sudo
Risposta
#7
Si. Però dipende da chi lo esegue. Se lo esegui a mano tu, è il tuo utente. Se lo esegue crontab, è root cioè l'amministratore.

Inviato dal mio Redmi Note 4X utilizzando Tapatalk



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#8
Ciao a tutti, ho ancora dei problemi, se eseguo il file bash dalla mia home manualmente funziona, se invece lo faccio eseguire dal crontab lo esegue ma senza richiamare il file python (al quale ho aggiunto il percorso)... Allego i codici.

Codice:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# For more information see the manual pages of crontab(5) and cron(8)
# m h  dom mon dow   command
00 08 * * * sudo python /home/pi/datalog.py #salva una copia del file Logds in datalog
59 07 * * * sudo python /home/pi/invio_Logds.py #invia Logds.txt delle ultime 24 ore a domo
10 06 * * * sudo python /home/pi/inviotempinst.py #registra la t nel file Log_daily610AM e invia una mail con la t a domo
25 08 * * * sudo bash /home/pi/plot.sh #crea grafico di 24 ore di t nella cartella djet grafici
02 07 * * * sudo python /home/pi/gnu_datalog.py #salva una copia del log per gnuplot in graficitemp
                                                                                                     

plot.sh
Codice:
#!/bin/sh
FILE=/home/pi/Logdsgnu.txt
now=/home/djet/grafici/$(date +"%d_%m_%Y")
#now=$(date +"%d_%m_%Y")
gnuplot -persist <<PLOT
set datafile separator ";"
set grid
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xlabel "Ora"
set ylabel "░C"
set terminal png medium
set output "temperatura_METEO109EPI.png"
set title "Temperatura Epinel $now"
plot "$FILE" using 1:(column(2)) t "Temperatura" with lines lt 1 lw 3 linecolor 2
quit
PLOT
sudo python /home/pi/invio_grafico.py
mkdir -m a=rwx $now &&
mv  *.png $now
                 
invio_grafico.py
Codice:
import time
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

fromaddr = "miamail@gmail.com"
recipients = ['dest1@gmail.com', 'dest2@gmail.com'
]
msg = MIMEMultipart()

msg['From'] = fromaddr
msg['To'] = ",".join(recipients)
msg['Subject'] = "METEO109EPI"

body = "In allegato il grafico delle temperature di Epinel delle ultime 24 ore"

msg.attach(MIMEText(body, 'plain'))

filename = "temperatura_METEO109EPI.png"
attachment = open("/home/pi/temperatura_METEO109EPI.png", "rb")

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "miapassword")
text = msg.as_string()
server.sendmail(fromaddr, recipients, text)
server.quit()
time.sleep(5)
               

Il sudo l'ho lasciato davanti a tutti i comandi, può essere un problema?
per caso può essere utile mettere una pausa nello script dopo l'esecuazione del file python?
Risposta
#9
00 08 * * * sudo python /home/pi/datalog.py #salva una copia del file Logds in datalog
59 07 * * * sudo python /home/pi/invio_Logds.py #invia Logds.txt delle ultime 24 ore a domo
10 06 * * * sudo python /home/pi/inviotempinst.py #registra la t nel file Log_daily610AM e invia una mail con la t a domo
25 08 * * * sudo bash /home/pi/plot.sh #crea grafico di 24 ore di t nella cartella djet grafici
02 07 * * * sudo python /home/pi/gnu_datalog.py #salva una copia del log per gnuplot in graficitemp

leva quei sudo!  Big Grin
sei già amministratore con crontab!   
e se il file plot.sh ha l'attributo di esecuzione (chmod +x file) non serve nemmeno bash.

plot.sh

#!/bin/sh
FILE=/home/pi/Logdsgnu.txt
now=/home/djet/grafici/$(date +"%d_%m_%Y")
#now=$(date +"%d_%m_%Y")
gnuplot -persist < set datafile separator ";"
set grid
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xlabel "Ora"
set ylabel "░C"
set terminal png medium
set output "temperatura_METEO109EPI.png"
set title "Temperatura Epinel $now"
plot "$FILE" using 1Sadcolumn(2)) t "Temperatura" with lines lt 1 lw 3 linecolor 2
quit
PLOT
sudo python /home/pi/invio_grafico.py
mkdir -m a=rwx $now &&
mv  *.png $now

anche qui il sudo non serve.
ho qualche riserva sul mkdir e il mv. non gli specifichi path nemmeno qui. non dimenticare che quando lo esegui con crontab NON E' il tuo utente, quindi devi dirgli dove sono i file e dove vuoi fare le operazioni.

edit: sono un mod poco efficiente, non ho usato il tag [ code ]
in realtà perchè non funzionano i colori dentro Tongue



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#10
Ok, levo il sudo Sad perchè non è corretto, l'avevo messo per tentare di far funzionare il tutto. La mia domanda è: se metto il sudo funziona ugualmente o può essere che essendo eseguito da root gli dia fastidio e in qualche maniera non funzioni correttamente?
Mi pare di aver tentato anche senza sudo ma in ogni caso seguo alla lettera i tuoi consigli.
questo potrebbe essere corretto?

Codice:
python /home/pi/invio_grafico.py
mkdir -m a=rwx /home/djet/grafici/$now &&
mv  /home/djet/grafici/*.png $now

(29/01/2018, 09:40)Luca Charruaz Ha scritto: Ok, levo il sudo Sad perchè non è corretto, l'avevo messo per tentare di far funzionare il tutto. La mia domanda è: se metto il sudo funziona ugualmente o può essere che essendo eseguito da root gli dia fastidio e in qualche maniera non funzioni correttamente?
Mi pare di aver tentato anche senza sudo ma in ogni caso seguo alla lettera i tuoi consigli.
questo potrebbe essere corretto?

Codice:
python /home/pi/invio_grafico.py
mkdir -m a=rwx /home/djet/grafici/$now &&
mv  /home/djet/grafici/*.png $now

"può essere che essendo"  Exclamation Rolleyes
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect