[RISOLTO] Incomprensione funzionalità Crontab

Discussioni relative a Debian e Linux

[RISOLTO] Incomprensione funzionalità Crontab

Messaggioda marco91 » 23/09/2018, 19:02

Ciao a tutti !
Vorrei imparare ad utilizzare crontab e stato provando ad avviare uno script bash che ho creato, ma che al riavvio del pc non si avvia.
Non sono ancora pratico con crontab: ho stampato un manuale, ma avviare uno script .bash non mi sta riuscendo.
Vi posto un foto in allegato, affinchè possa mostrare come ho proceduto al collocamento del file .sh
Nella foto, ho utilizzato le stringhe speciali, in questo caso "reboot", affinchè lo script si avvii automaticamente all'accensione del pc.
Ho provato anche ad utilizzare anacron (non contrab), ma al riavvio non ho lo script impostato.

Il mio script inizia e finisce così, e possiede i privilegi di esecuzione:
#!/bin/bash

exit 0

Grazie
Allegati
contrab.png
contrab.png (50.78 KiB) Osservato 612 volte
Ultima modifica di marco91 il 25/09/2018, 20:22, modificato 1 volta in totale.
marco91
Full Member
Full Member
 
Messaggi: 149
Iscritto il: 06/12/2015, 12:02
Località: imola

Re: incomprensione funzionalità Crontab

Messaggioda Aki » 24/09/2018, 5:07

Mi sembra di vedere almeno due errori nella ultima riga che hai aggiunto al file /etc/crontab
1) manca lo username dell’utente
2) il comando sembra sintatticamente errato (tra firewall ed il nome dello script c’è uno spazio)

Inoltre c’è un potenziale errore concettuale: quando lo script è eseguito non è detto che le interfaccie di rete siano già configurate.

Infine, ti suggerirei di non inviare immagini, ma fornire il contenuto dei file che ritieni utile fornire (come in questo caso) in formato testuale in modo che siano più facilmente leggibili e, all’uopo, modificabili in caso di suggerimenti.

Quale manuale di crontab hai stampato ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 8005
Iscritto il: 27/12/2007, 16:59

Re: incomprensione funzionalità Crontab

Messaggioda marco91 » 24/09/2018, 8:06

La guida che ho stampato è questa e ho seguito "esempio di contrab": http://guide.debianizzati.org/index.php ... uling_Cron
marco91
Full Member
Full Member
 
Messaggi: 149
Iscritto il: 06/12/2015, 12:02
Località: imola

Re: incomprensione funzionalità Crontab

Messaggioda Aki » 24/09/2018, 13:42

marco91 ha scritto:La guida che ho stampato è questa e ho seguito "esempio di contrab": http://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_Cron

Grazie per il riscontro sulla guida.

L’ “esempio di crontab” che hai seguito è relativo al file crontab di un utente generico e non ad /etc/crontab : la guida a cui fai riferimento illustra questa differenza, che forse ti è sfuggita.

Hai compreso gli errori che ti ho segnalato ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 8005
Iscritto il: 27/12/2007, 16:59

Re: incomprensione funzionalità Crontab

Messaggioda marco91 » 24/09/2018, 22:29

Ciao Aki.
Ho capito di essermi sbagliato ad approcciarmi, ma non ho capito come procedere ad avviare correttamente lo script
marco91
Full Member
Full Member
 
Messaggi: 149
Iscritto il: 06/12/2015, 12:02
Località: imola

Re: incomprensione funzionalità Crontab

Messaggioda Aki » 25/09/2018, 6:42

Cos’è che non ti è chiaro in queste righe:
Mi sembra di vedere almeno due errori nella ultima riga che hai aggiunto al file /etc/crontab
1) manca lo username dell’utente
2) il comando sembra sintatticamente errato (tra firewall ed il nome dello script c’è uno spazio)
Aki
Global Moderator
Global Moderator
 
Messaggi: 8005
Iscritto il: 27/12/2007, 16:59

Re: incomprensione funzionalità Crontab

Messaggioda marco91 » 25/09/2018, 20:14

sono riuscito a capire gli errori: chiedo che gli amministratori del forum correggano la guida, aggiungendo questo particolare per avviare correttamente uno script bash con crontab
Per avviare correttamente uno script bash è necessario aggiungere "sh" prima dello script .sh da avviare: questo passaggio è necessario affinchè gli utenti inesperti possano non avere problemi.
Mi sono ricordato che per avviare uno script bash col terminale aggiungevo "sh" prima dello script, e facendolo in crontab, tutto ha funzionato.
Ho aggiunto l'user dell'utente , in "root", come suggerito.
Ovviamente per rendere ammissibile l'esecuzione dello script bash, è necessario modificare il parametro SHELL in "SHELL=/bin/bash" come spiega la guida.
Posto una foto, affinchè possa indicare meglio la segnalazione da aggiungere nella guida "http://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_Cron" per avviare gli script bash correttamente.
Allegati
crontab.png
crontab.png (111.8 KiB) Osservato 369 volte
marco91
Full Member
Full Member
 
Messaggi: 149
Iscritto il: 06/12/2015, 12:02
Località: imola

Re: incomprensione funzionalità Crontab

Messaggioda Aki » 26/09/2018, 5:46

marco91 ha scritto:Per avviare correttamente uno script bash è necessario aggiungere "sh" prima dello script .sh da avviare: questo passaggio è necessario affinchè gli utenti inesperti possano non avere problemi.

Quanto indichi non è una regola generale.

Con il comando "sh" hai "aggirato" la verosimile reale causa del mancato avvio dello script (dopo aver apportato le correzione agli errori che ti ho indicato), che però non hai identificato. Tale causa verosimilmente consiste nella mancata attribuzione dei privilegi di esecuzione allo script "/home/marco/Scrivania/iptables.sh". In altri termini, lo script nel tuo caso non è avviato perché, sebbene inizi con l'indicazione dello "hashbang" (#!/bin/bash ), non ha i privilegi di esecuzione (ma solo quelli di lettura e/o scrittura).

Il codice sorgente (in linguaggio C) di cron che esegue il comando, per Debian Stable, è reperibile a questo indirizzo: https://sources.debian.org/src/cron/3.0pl1-130/do_command.c/#L375

marco91 ha scritto:Mi sono ricordato che per avviare uno script bash col terminale aggiungevo "sh" prima dello script

Questo accade solo nel caso in cui lo script da eseguire non abbia i privilegi di esecuzione (oppure, pur avendo i privilegi di esecuzione, non inizia con l'hashbang) e, quindi, per essere eseguito deve essere indicato esplicitamente l'interprete da utilizzare (in questo caso /bin/bash o /bin/dash) per eseguirlo (passandolo come parametro al programma dell'interprete).

marco91 ha scritto:Posto una foto, affinchè possa indicare meglio la segnalazione da aggiungere nella guida "http://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_Cron" per avviare gli script bash correttamente.

Ti ringrazio, anche a nome degli estensori e revisori della guida, per la segnalazione, ma, alla luce di quanto indicato, presumo che nella guida forse si può ricordare di verificare che un eventuale script inserito in crontab disponga dai privilegi di esecuzione.

nota: volendo eseguire dei test, puoi utilizzare il seguente codice sorgente (in linguaggio C) di prova equivalente in buona parte a quello di cron; la descrizione della funzione di libreria execle è disponibile nel manuale "The GNU C Library" (all'indirizzo https://www.gnu.org/software/libc/manual/html_node/Executing-a-File.html#Executing-a-File ) :
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

extern char **environ;

int main(char **argv, int argc) {

        char *shell="/bin/bash";
        char **jobenv = environ;
        char *cmd="/home/$USER/test_script.sh";
        execle(shell, shell, "-c", cmd, (char *)0, jobenv);
        return(0);
}

dove il file test_script.sh contiene:
Codice: Seleziona tutto
#!/bin/bash
ls

Se il file test_script.sh non ha i privilegi di esecuzione:
Codice: Seleziona tutto
$ ls -la test_script.sh
-rw-r--r-- 1 aki aki 16 set 26 06:17 test_script.sh
il codice sopra riportato restituisce:
Codice: Seleziona tutto
$ ./test
/bin/bash: /home/aki/test_script.sh: Permesso negato

Al contrario, se ha i privilegi di esecuzione:
Codice: Seleziona tutto
$ chmod u+x /home/aki/test_script.sh
$ ls -la test_script.sh
-rwxr--r-- 1 aki aki 16 set 26 06:17 test_script.sh
$ ./test
 Immagini    projects    share            Video

Infine, torno a chiedere cortesemente, salvo altri elementi ostativi, di non allegare immagini, ma il testo dei file e/o schermate che intendi riportare nel forum.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8005
Iscritto il: 27/12/2007, 16:59

Re: [RISOLTO] Incomprensione funzionalità Crontab

Messaggioda marco91 » 26/09/2018, 13:28

grazie per la spiegazione.
La prossima volta non allego foto, ma testi e auspico che la guida abbia questa tua spiegazione chiara.
marco91
Full Member
Full Member
 
Messaggi: 149
Iscritto il: 06/12/2015, 12:02
Località: imola


Torna a Generale

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti