Repository 32bit  Forum
Repository 64bit  Wiki

[bash] verificare che un file config sia stato modificato

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[bash] verificare che un file config sia stato modificato

Messaggioda danix » gio set 17, 2009 15:42

Ciao a tutti,
sto scrivendo un programmino in bash che mi permetta di caricare in più directory alcuni files tramite lftp, per gestirlo bene ho pensato di usare un file di configurazione separato, però mi è venuto un dubbio.
Ho messo i controlli per verificare che il file esista e sia leggibile, in caso contrario faccio uscire il programma con un warning, ma come faccio a sapere se il file è stato modificato inserendo i parametri per la connessione??

Vi faccio un esempio:
il programma verifica che il file non c'è, ne crea uno vuoto in /home/utente/.mioconfig ed esce
.mioconfig ha questo contenuto
Codice: Seleziona tutto
# questo è il file di configurazione per miaapp.sh, inserisci i dati corretti per la connessione.

ftp_server=""
ftp_user=""
ftp_pass=""
dir1=""
dir2=""

la seconda volta che lancerò miaapp.sh, non lamenterà l'assenza del file però, se io non l'ho modificato con i parametri, la connessione non potrà aver luogo ugualmente... come faccio a verificare che quelle variabili abbiano un valore prima di lanciare la connessione??
La cosa migliore che mi viene in mente è di usare || in un if, qualcosa del genere:
Codice: Seleziona tutto
if [[ ftp_server =="" || ftp_user =="" || ftp_pass == "" || dir1 == "" || dir2 =="" ]]; then
  echo "non hai scritto i parametri";
else
  echo "tutto ok"
fi

ma sono sicuro che ci siano metodi un po' più eleganti per fare la stessa cosa... solo che non li conosco (o non mi vengono in mente :( )...

chi mi indirizza sulla retta via?? :D

Grazie mille a tutti in anticipo...
ciau
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: [bash] verificare che un file config sia stato modificato

Messaggioda Paoletta » gio set 17, 2009 16:59

per vedere se una variabile è impostata puoi usare echo,
ma secondo me fai prima con un if perché controllare le variabili
una per una è una scelta ancora peggiore:
Codice: Seleziona tutto
if [ "$ftp_server" = "" -o "$ftp_user" = "" -o "$ftp_pass" = "" -o "$dir1" = "" -o "$dir2" = ""  ]; then echo "non hai scritto i parametri";
else
  echo "tutto ok"
fi
Avatar utente
Paoletta
Staff
Staff
 
Messaggi: 3893
Iscritto il: dom apr 24, 2005 23:00
Località: Varese
Slackware: 13.1
Desktop: fluxbox

Re: [bash] verificare che un file config sia stato modificato

Messaggioda sixjan » gio set 17, 2009 17:04

Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: [bash] verificare che un file config sia stato modificato

Messaggioda Paoletta » gio set 17, 2009 17:48

sixjan ha scritto:
Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi

ottimo metodo...non conoscevo l'opzione -q di grep! grazie
Avatar utente
Paoletta
Staff
Staff
 
Messaggi: 3893
Iscritto il: dom apr 24, 2005 23:00
Località: Varese
Slackware: 13.1
Desktop: fluxbox

Re: [bash] verificare che un file config sia stato modificato

Messaggioda urka58 » gio set 17, 2009 17:51

Scusa, ma se devi solo vedere se le variabili sono impostate (ed eventualmente corrette), basta un echo, che so...
echo "il server ftp è $mio_server_ftp"
echo "La password è $mia_password"
Per impostare le variabili, nel caso non lo fossero, ci possono essere varie implementazioni, dipende da cosa vuoi fare, se devono essere necessariamente tutte impostate, se usi un file source (come mi sembra)...
Ciao
Avatar utente
urka58
Linux 2.6
Linux 2.6
 
Messaggi: 529
Iscritto il: mer dic 07, 2005 23:29

Re: [bash] verificare che un file config sia stato modificato

Messaggioda sixjan » gio set 17, 2009 18:05

Paoletta ha scritto:
sixjan ha scritto:
Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi

ottimo metodo...non conoscevo l'opzione -q di grep! grazie


Prego.
sixjan
Linux 2.4
Linux 2.4
 
Messaggi: 407
Iscritto il: dom gen 06, 2008 11:46
Slackware: 14.1
Kernel: 3.10.17-smp
Desktop: Xfce 4.10

Re: [bash] verificare che un file config sia stato modificato

Messaggioda danix » gio set 17, 2009 18:11

sixjan ha scritto:
Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi

a volte le soluzioni più semplici sono quelle che non ti vengono in mente ;)

grazie mille :D
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: [bash] verificare che un file config sia stato modificato

Messaggioda urka58 » gio set 17, 2009 18:36

danix ha scritto:
sixjan ha scritto:
Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi

a volte le soluzioni più semplici sono quelle che non ti vengono in mente ;)

grazie mille :D


Senza nulla togliere a nessuno...ma così controlli solo che che le variabili non siano nulle, il valore può essere qualunque.
Se i parametri per la connessione sono fissi li inserisci nel tuo script e basta, se possono o devono cambiare devi verificare che siano anche corretti.
Magari non ho capito niente io...
Ciao
Avatar utente
urka58
Linux 2.6
Linux 2.6
 
Messaggi: 529
Iscritto il: mer dic 07, 2005 23:29

Re: [bash] verificare che un file config sia stato modificato

Messaggioda murdock » gio set 17, 2009 23:37

danix ha scritto:
sixjan ha scritto:
Codice: Seleziona tutto
if ! grep -q '=""' $HOME/.mioconfig; then echo tutto ok; fi

a volte le soluzioni più semplici sono quelle che non ti vengono in mente ;)

grazie mille :D


Già, io stavo pensando addirittura ad un match md5 sul file .mioconfig... :D

Saluti,
MuRdOcK
Avatar utente
murdock
Linux 2.4
Linux 2.4
 
Messaggi: 451
Iscritto il: ven mag 25, 2007 11:58
Slackware: 64 14.1
Kernel: 3.14.4
Desktop: KDE 4.12.5

Re: [bash] verificare che un file config sia stato modificato

Messaggioda danix » ven set 18, 2009 17:28

urka58 ha scritto:Senza nulla togliere a nessuno...ma così controlli solo che che le variabili non siano nulle, il valore può essere qualunque.
Se i parametri per la connessione sono fissi li inserisci nel tuo script e basta, se possono o devono cambiare devi verificare che siano anche corretti.
Magari non ho capito niente io...
Ciao

Hai perfettamente ragione. Ho pensato di usare un file di conf di cui fare il source perchè così non devo andare ogni volta a modificare il file in /usr/local/bin, in questo modo gestisco meglio le cose senza scomodare root ;)
Riguardo al fatto che sarebbe meglio controllare se i parametri passati sono corretti ovviamente hai ragione, ma a me basta sapere se ho modificato il file, tanto un echo riguardante il server lo faccio sempre ;) così ho un colpo d'occhio sul sito su cui sto lavorando. Le cose sarebbero diverse se decidessi di rilasciare lo script al pubblico, ma per ora, sapere di aver modificato il file è già di per se più che sufficiente ;)

In ogni caso, tu come controlleresti se i dati sono corretti??
Avatar utente
danix
Staff
Staff
 
Messaggi: 3280
Iscritto il: ven ott 27, 2006 18:32
Località: Siderno (RC)
Nome Cognome: Danilo M.
Slackware: 64 14.0
Kernel: 3.2.29
Desktop: fluxbox

Re: [bash] verificare che un file config sia stato modificato

Messaggioda urka58 » ven set 18, 2009 18:03

Magari è un po' banale...
Codice: Seleziona tutto
cat mio_file.conf
read              # aspetta un imput per proseguire
clear             # se ti da noia continuare a vedere le variabili impostate

Giusto un'idea...
Ciao

PS: un filo meglio
Codice: Seleziona tutto
cat mio_file.conf
echo "Tutto apposto?, notare il neologismo..."
read risposta
[ $risposta == y ] || exit   # eviti il ctrl+c per uscire se qualcosa non va       
clear             # se ti da noia continuare a vedere le variabili impostate


PPS e poi basta!
Codice: Seleziona tutto
cat mio_file.conf
echo "Tutto apposto?, notare il neologismo..."
read risposta
[ $risposta == y ] || /usr/bin/pico mio_file.conf  # puoi modificare il file al volo
. mio_file.conf                                               
clear             # se ti da noia continuare a vedere le variabili impostate
Avatar utente
urka58
Linux 2.6
Linux 2.6
 
Messaggi: 529
Iscritto il: mer dic 07, 2005 23:29


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti