Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860

    scriptin regole e cicli

    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

  2. #2
    Utente di HTML.it L'avatar di Lasher
    Registrato dal
    Apr 2003
    Messaggi
    183
    Ecco qua un bel link:

    http://www.pluto.it/files/ildp/guide/abs/

    Ciauz!
    Star Wars Fan


    Jam

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    1,157

    Re: scriptin regole e cicli

    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




  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    perfetto grazie

    ma avevo risolto anche con i man.
    solo una cosa ci sto impazzendo..

    dunque io faccio questo:
    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
    il file log si crea correttamente ma l'output a video del comando sudo sh firewall1.sh è:

    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

  5. #5
    Utente di HTML.it L'avatar di Lasher
    Registrato dal
    Apr 2003
    Messaggi
    183
    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    ammesso che il codice debba diventare questo:
    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
    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ì...
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    forse la cosa migliora... anche se qui ci sono cose che non tornano e non per causa mia...

    codice:
    #!/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 12: +%D: command not found
    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

  8. #8
    Utente di HTML.it L'avatar di Guglie
    Registrato dal
    Dec 2002
    Messaggi
    1,572
    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!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    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:
    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
    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.

    grazie


    Linux Inside

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.