Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Script .sh salta le istruzioni!

    Ciao a tutti, mi scusa subito per il titolo, ma sinceramente non sapevo cosa scrivere con 4 parole!!
    Il mio problema è che ho creato uno script .sh su una macchina Linux che esegue determinate operazioni e per ognuna di esse verifica se è stata eseguita correttamente e redige il risultato su un file che viene poi inviato via email.
    Esempio:

    echo "mi sposto nella directory" >> MAIL
    cd /var/log
    if [ $? != "0" ]
    echo "spostato correttamente" >> MAIL
    else
    echo "errore nello spostamento" >> MAIL
    echo "copio il file" >> MAIL
    cp prova.log /root/dir
    if [ $? != "0" ]
    echo "copiato correttamente" >> MAIL
    else
    echo "errore nello copia" >> MAIL

    E la mail se tutto è andato a buon fine è :
    mi sposto nella directory
    spostato correttamente
    copio il file
    copiato correttamente

    L'altro giorno mi è tornata la mail tutta incasinata del tipo
    copiato correttamente
    mi sposto nella directory
    spostato correttamente
    copio il file

    E' come se saltasse autonomamente le istruzioni e non capisco il perchè! Qualcuno sa aiutarmi?! Grazie anticipatamente!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ci sono diverse cose che non tornano, ed è praticamente impossibile che questo script ti venga interpretato senza problemi (hai letto gli eventuali messaggi di errori nella console?)

    Innanzitutto rivediti la sintassi del costrutto if-then-else in bash, poi ricorda che in generale un comando quando va a buon fine restituisce 0 come valore di ritorno e un valore diverso da 0 altrimenti (e non viceversa!) e poi rivediti la logica dello script... nella prima riga vai ad aggiungere una riga ad un file "MAIL" che se non esiste viene creato, poi ti sposti in /var/log (dove tra l'altro da utente semplice non hai permessi di scrittura) e tenti di aggiungere un'altra riga a MAIL... ma MAIL in quella directory non c'è, sta nella directory in cui avvii lo script, per questo quell'istruzione equivale a dire "crea un file MAIL e aggiungici questa riga", ma poiché da utente semplice in /var/log non hai permessi di scrittura il file non puoi crearlo (che poi comunque non avrebbe senso perché sarebbe un file diverso da quello di partenza).

    Insomma rivediti un po' la sintassi e la logica dello script...
    every day above ground is a good one

  3. #3
    intanto grazie mille per la risposta!
    forse non stata molto chiara, ma lo script che ho riportato era solo d'esempio e l'ho scritto così al volo! solo per cercare di far capire meglio qual'è il problema che ottengo!In realtà il mio script verifica correttamente tutti quegli appunti che hai sottolineato.
    Lo script, come dire, sintatticamente è corretto! l'ho già testato varie volte e funziona su vari pc!
    Ma da 2 giorni, da un pc, lo script viene eseguito in questa maniera "strana", saltando arbitrariamente da un'operazione ad un altra!
    mi scuso ancora per la non chiarezza..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da soniettabrasile
    Ma da 2 giorni, da un pc, lo script viene eseguito in questa maniera "strana", saltando arbitrariamente da un'operazione ad un altra!
    Che dire... se hai realizzato uno script che prima funzionava perfettamente e ora non va più, l'unica spiegazione sensata e che non lo stai avviando più nelle stesse condizioni di prima. Ti ripeto, se devi aprire un file in /var/log devi avere privilegi di root, quindi devi avviare lo script come root. Forse è questo che facevi prima e ora non più? Sennò posta lo script effettivo e si vede di capire cosa non va, non si può provare a indovinare l'errore senza conoscere il problema in dettaglio. Il fatto che due giorni fa andasse a buon fine e ora non più non dà nessun'indizio.
    every day above ground is a good one

  5. #5
    ma infatti la cosa è molto strana! e soprattutto il path /var/log era inventato anche questo, nel mio script non si fa riferimento a questa posizione e soprattutto lo script viene lanciato da crontab!
    il bello è che nessuno ha toccato niente di questo script, è una cosa che è stata settata mesi fa e poi ci pensa appunto il crontab a lanciarlo...
    cercavo di capire se il fatto di questi salti nello script dipendevano da qualche virus e speravo che a qualcuno fosse successo lo stesso e che fosse riuscito a risolvere..
    tutto qui..al momento nn dispongono dello script completo, poichè sono a casa..

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    20
    io posterei il tuo vero script, altrimenti è come sparare al buio. Magari hai fatto un errore logico che si mostra in una combinazione di particolari casi

  7. #7
    Ragazzi sono riuscita a risolvere! il problema non era nello script in sè! perchè era stato testato mille volte e non aveva mai dato alcun problema! il fatto era che ne veniva lanciato un'altro a distanza di un'ora, ma il primo non aveva ancora terminato tutte le operazioni!
    ho risolto facendo partire il secondo al termine del primo!
    grazie mille di tutto comunque!

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.