salve ragazzi
è diverso tempo che non creo script di shell e quindi non ricordo dove andare a vedere le varie condizioni e i vari cili iterativi...
esiste qualche man di sistema a proposito oppure dove li trovo?
grazie
salve ragazzi
è diverso tempo che non creo script di shell e quindi non ricordo dove andare a vedere le varie condizioni e i vari cili iterativi...
esiste qualche man di sistema a proposito oppure dove li trovo?
grazie
Linux Inside
Ecco qua un bel link:
http://www.pluto.it/files/ildp/guide/abs/
Ciauz!
Star Wars Fan
Jam
Originariamente inviato da ThePenguin
salve ragazzi
è diverso tempo che non creo script di shell e quindi non ricordo dove andare a vedere le varie condizioni e i vari cili iterativi...
esiste qualche man di sistema a proposito oppure dove li trovo?
grazie
http://www.pluto.it/files/ildp/HOWTO...tro-HOWTO.html
http://www2.pluto.it/ildp/guide/abs/index.html
perfetto grazie
ma avevo risolto anche con i man.
solo una cosa ci sto impazzendo..
dunque io faccio questo:
il file log si crea correttamente ma l'output a video del comando sudo sh firewall1.sh è:codice:#!/bin/bash # Firewall personale a linea in autoatico by RO76 ################################################## ######################### # Definizione Variabili # ######################### PERCORSO="/home/ro76" # da sostituire con la propria home folder IPTABLES="/sbin/iptables" IFLO="lo" IFEXT="eth=0" # Da sostituire con la propria interfaccia: eth0, eth1, ppp0, etc ############################################################################################################# # Creazione e/o controllo dell'esistenza del file di log # # Annotazione: ovunque si leggerà il percorso /home/ro76/ si dovrà sostituire con il la propria home folder # ############################################################################################################# if [ ! -e $PERCORSO/firewall.log ] ; then # creo il file che sarà inizialmente vuoto /bin/touch $PERCORSO/firewall.log fi
ro76@ubuntu:~$ sudo sh firewall1.sh
: command not found2:
: command not found5:
ro76@ubuntu:~$
ma che è sto command non tound2 e 5
il comando touch è al posto giusto come il comando iptables
grazie
Linux Inside
Se non ricordo male il punto e virgola va attaccato alla parentesi quadra di chiusura, e per il comando touch, basta scrivere touch appunto, senza il percorso assoluto (magari non è dove dici tu).
E poi perchè fai partire lo script con sh?
Star Wars Fan
Jam
ammesso che il codice debba diventare questo:
inutile mi si ripropone lo stesso errore e cavolo il comando touch è nella diectory /bin come esiste ovviamente il persorso /hme/ro76 ci mancherebbe pure che non fosse così...codice:#!/bin/bash # Firewall con avvio automatico by RO76 ######################################## ######################### # Definizione Variabili # ######################### PERCORSO="/home/ro76" # da sostituire con la propria home folder IPTABLES="/sbin/iptables" IFLO="lo" IFEXT="eth=0" # Da sostituire con la propria interfaccia: eth0, eth1, ppp0, etc ############################################################################################################# # Creazione e/o controllo dell'esistenza del file di log # # Annotazione: ovunque si leggerà il percorso /home/ro76/ si dovrà sostituire con il la propria home folder # ############################################################################################################# if [ ! -e $PERCORSO/firewall.log ]; then # creo il file che sarà inizialmente vuoto /bin/touch $PERCORSO/firewall.log fi
io onestamente più di questo non vedo altri possibili errori... e voi?
perchè lancio lo script così?
beh perchè ubuntu non ha abilitato root quindi per muoversi come superuser ci vuole sudo altrimenti certi comandi sono bloccati, touch potrebbe essere uno di questi
ciao
Linux Inside
forse la cosa migliora... anche se qui ci sono cose che non tornano e non per causa mia...
firewall1.sh: line 12: +%D: command not foundcodice:#!/bin/bash # # Definizione Variabili PERCORSO="/home/ro76" # da sostituire con la propria home folder IFEXT="eth=0" # da sostituire con la propria interfaccia: eth0, eth1, ppp0, etc IFLO="lo" IPTABLES="/sbin/iptables" # Creazione e/o controllo dell'esistenza del file di log if [ -e $PERCORSO/firewall.log ] ; then #recupero le informazioni che mi servono! Data=/bin/date +%D Ora=/bin/date +%R Avviso1="Firewall Attivato con Successo!" STRINGAFINALE=$Data $Ora $Avviso1 #aggiorno il file di log /bin/echo $STRINGAFINALE >> $PERCORSO/firewall.log else # creo il file di log /bin/touch $PERCORSO/firewall.log #recupero le informazioni che mi servono! Data=/bin/date +%D Ora=/bin/date +%R Avviso1="Firewall Attivato con Successo!" STRINGAFINALE=$Data $Ora $Avviso1 #aggiorno il file di log /bin/echo $STRINGAFINALE >> $PERCORSO/firewall.log fi
firewall1.sh: line 13: +%R: command not found
firewall1.sh: line 15: Firewall: command not found
ora quelle sono le righe che lui mi elenca come errore in esecuzione.
Io non sarò un genio in campo scriptig ma nemmeno il primo idiota che passa per la strada... quindi o qui il sistema è uscito di senno per ragioni che non so... oppure che qualcuno mi dica dove sbaglio; se sbaglio; ho seri dubbi al riguardo perchè il medesimo comando lanciato da terminale mi rilascia ora e data correttamente e la riga 15 mi deve spiegare cos'è sto firewall command not found che alla riga 15 c'è la creazione di una variabile attraverso l'unione di più parti.
grazie ragazzi
Linux Inside
hai fatto 2 tipi di errori:
quando definisci delle variabili e le assegni un valore con un comando con degli spazi con bash devi usare nomevariabile=$(comando | comando2 | comando3)
nel tuo caso Data=$(/bin/date +%D)
quando definisci una variabile stringa è sempre meglio usare stringa="$var1"
nel tuo caso STRINGAFINALE="$Data $Ora $Avviso1"
ci sarebbe anche un errore di stile, perchè hai scritto 2 volte le stesse righe di codice, ripetendole nel then e nell'else, è meglio se fai finire l'if prima
dopo queste 2 modifiche il risultato sarebbe questo:
#!/bin/bash
#
codice:# Definizione Variabili PERCORSO=/home/evellon/test # da sostituire con la propria home folder IFEXT="eth=0" # da sostituire con la propria interfaccia: eth0, eth1, ppp0, etc IFLO="lo" IPTABLES="/sbin/iptables" # Creazione e/o controllo dell'esistenza del file di log if [ ! -e $PERCORSO/firewall.log ] ; then /bin/touch $PERCORSO/firewall.log fi #recupero le informazioni che mi servono! Data=$(/bin/date +%D) Ora=$(/bin/date +%R) Avviso1="Firewall Attivato con Successo!" STRINGAFINALE="$Data $Ora $Avviso1" #aggiorno il file di log /bin/echo $STRINGAFINALE >> $PERCORSO/firewall.log
powered by GNU/Linux Gentoo
A Elbereth Gilthoniel o menel palan-diriel, le nallon sí di-nguruthos! A tiro nin, Fanuilos!
grazie mille così funziona!
ora senza aprie un'altra discussione vi chiedo qualche suggerimento per quanto riguarda il comando iptables.
dunque lo script avrà una fase di start/stop/status/restart; ma se io volessi fare un ciclo if di controllo del tipo:
se il firewall è attiva allora
stoppalo
ealtrimenti
avvialo
fine
avendo per esempio il codice nella fase di stop che è il seguente:
in breve devo peter far capire allo script quando l'ho lanciato csa fare e non volevo fare una case ma semplicemente dirgli se è attivo e lo lancio allora stoppalo se è stoppato e io lancio lo script allora attivalo.codice:$IPTABLES -F $IPTABLES -F -t nat $IPTABLES -F -t mangle $IPTABLES -X $IPTABLES -X -t nat $IPTABLES -X -t mangle $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT
grazie
Linux Inside
credo di aver risolto con un'ideuzza poco poco intrigante..
io creo il file di log che avrà
data
ora
stato del firewall (che sarà Attivo" o "inattivo")
risultato dell'operazione
a questo punto io vado a leggermi l'ultima riga del file di log alla terza olonna e se c'è attivo allora si stoppa altrimenti parte.
mi rimangono soltanto delle piccole perplessità...
- in primis dovendo contemplare il restart qui mi si mette male perchè potrei fare un case a voce unica in maniera che si lanci restart per riattivarlo, fase di stop e start e quindi poi scrivere attivo nella nuova ed ultima riga che si crea nel file log.
- in secondis creo il file di log ma è vuoto quindi cme fa a determinare l'operazione da fare se dentro al file non c'è scritto nulla?
voi che dite può essere la strada giusta da percorrere?
grazie
Linux Inside