PDA

Visualizza la versione completa : [scripting] Assegnare una variabile da riga di comando


GunMan
05-02-2007, 00:53
salve a tutti :)

scusate per il titolo ma non me ne veniva in mente uno migliore.

sono sicuro che mi sto perdendo nel classico bicchiere d'acqua ma non riesco a trovare un modo decente per impostare una variabile all'interno di uno script che sto realizzando.

in sostanza avrei la necessità che, una volta che lo script viene eseguito, possa venire impostata una variabile che esso utilizza mediante console.

questa variabile serve in pratica a terminare il ciclo che esegue lo script, un semplicissimo test di ping.

spero di essermi spiegato nel caso non aveste capito bene non fatevi problemi a domandare, cercherò di essere meno lacunoso nella spiegazione.

grazie anticipatamente per le eventuali risposte :)

:ciauz:

cacao74
05-02-2007, 01:04
piu' che una variabile di ambiente, opterei per la creazione (touch) di un file di testo "parlante"
esempio:


# codice script
...
file="/path/to/basta_con_questo_ping"
ciclo {
esiste "$file" ?
# si
elimina "$file"
esci dal ciclo
# no
lancia un ping
}

Da shell, che ha un ambiente diverso da quello con cui gira lo script, ti bastera'


touch /path/to/basta_con_questo_ping

per interrompere lo script.

potresti comodamente definirti un alias per questa azione.

ciao :)

GunMan
05-02-2007, 01:13
innanzitutto ti ringrazio cacao per le tue risposte sempre molto pertinenti :)

la tua soluzione in effetti è molto interessante, provo però a spiegarti meglio cosa avevo in mente anche solo per capire se è possibile o no, a titolo informativo diciamo.

bene io ho un qualcosa del genere


#!/bin/bash
# script per monitorare il ping
ping xxx.x.xxx.xxx -q -c 10 1>>statistiche_ping.txt; date 1>>statistiche_ping.txt
durata=0
until [ $durata -eq 48 ]; do
sleep 15m
ping xxx.x.xxx.xxx -q -c 10 1>>statistiche_ping.txt; date 1>>statistiche_ping.txt
durata=$(( $durata + 1 ))
done
echo "Test ultimato, il log statistiche_ping.txt è nella directory corrente"
exit

come vedi è molto semplice, lo script esegue un test su un IP prestabilito e lo ripete ogni 15 minuti per 12 ore (circa), vorrei in sostanza modificarlo in modo tale da assegnare una variabile INIZIO e una TERMINE.

la variabile INIZIO leggerebbe la data in cui viene lanciato lo script mentre quella termine dovrebbe essere impostata dall'utente che lancia lo script.

tutto ciò è fattibile?

ti ringrazio ancora per la disponibilità :)

:ciauz:

cacao74
05-02-2007, 01:23
ok.
se non ho inteso male, ti bastera' far leggere al tuo script, due parametri passati sulla riga di comando
Ad esempio, lanciando:
$ ./mio_script data_fine
Il tuo script, dovra' prevedere:


...
nomescript="$0"
fine="$1"
inizio="$(date)" #valuta come formattare la data
...
# lascio a te la gestione di questi due valori

ciao

GunMan
05-02-2007, 01:33
grazie cacao per gli utili suggerimenti :)

vedrò di sbrogliare la matassa, magari se riesco a fare qualcosa di decente posto la soluzione sperando possa essere utile a qualcuno :)

:ciauz:

Loading