Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Unix script e Lista file input

    Ciao a tutti,
    premetto che non ho trovato una sezione per presentarsi!


    Sto facendo uno scriptino in Korn shell

    che deve:

    -prendere una lista di file contenuti in un file .txt di input (i file contenuti nel file di input
    contengo solo una data in questo formato 20110724)
    -per ogniuno di esso controllare la data

    E' un po' che sono fermo e mi sono arrugginito.. riesco solo a fare spoolare la lista di file contenuti nel txt ma non a fare in questo caso il 'more' e poi fare il confronto della data

    tenendo conto che deve scrivere un log con nome file e "ok" o "ko" a fianco


    #!/bin/ksh

    . /admin/home/.profile > /dev/null



    ####### EDIT ME ########

    CRON=lista1.txt
    #lista2.txt
    ###### DON'T EDIT #######



    cat /admin/home/read/$CRON | while read estra
    do
    echo $estra


    CONF=`find $estra -type f -exec more {} ;`
    TIME=$(date "+%Y%m%d")


    if [ "$CONF" -eq "$TIME" ];

    then

    echo "bla bla"

    else

    echo "bla bla bla"

    fi

    done



    Riuscireste gentilmente ad aiutarmi?
    Grazie a tutti!!

    Marco

  2. #2
    Nessuno che mi riesce a dare una mano??

    guardando una guida ho trovato come esempio questo ciclo di "for"


    for line in $(cat file.txt) do
    rm $
    done


    riadattandolo un po' per quello che dovrei fare io verrebbe :


    TIME=$(date "+%Y%m%d")

    for line in $ (cat file.txt) do
    more $

    if [ "$" -eq "$TIME" ];
    then
    echo "bla"
    else
    "bla bla"
    fi
    done


    Non sono sicuro che le variabili siano giuste..

  3. #3
    NESSUNOOO????

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    codice:
    CRON=lista1.txt;for a in `cat $CRON`; do if [ `sed q $a` -eq `date "+%Y%m%d"` ]; then echo "bla bla"; else echo "bla bla bla"; fi; done;

  5. #5
    Originariamente inviato da bubi1
    codice:
    CRON=lista1.txt;for a in `cat $CRON`; do if [ `sed q $a` -eq `date "+%Y%m%d"` ]; then echo "bla bla"; else echo "bla bla bla"; fi; done;
    ciao bubi1,
    grazie per l'aiuto ma non funziona cosi'..

    quindi ho cambiato metodo, faccio direttamente un 'ls' dei file..

    io ho bisogno di un log che a fianco del nome del file mi dice 'ok' o 'ko' e l'ho di produzione
    pero' cosi' come ho fatto mi dà problemi, perche' mi ha listato tutti i nomi dei file contenuti nella lista con di fianco scritto 'ko'..



    r="/root/read/"
    l="/root/out/"
    f="${r}Lista.txt"

    cat $f | while read e
    do
    a=`ls -1 $e`
    t=`echo $a | ls -lrt $e | awk '{print $8}'`
    d=`echo $a |ls -lrt | awk '{print $5}'`

    if [ "${a}" -ne "0" ]
    then
    echo " ${a} ok ${t} ${d}" >>$l/Lista.txt
    else
    echo " ${a} ko " >> $l/Lista.txt
    fi
    done

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    spero che ci sia l'allegato: casomai leggi qui http://www.dsy.it/forum/showthread.php?threadid=39390

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Markoss01
    ciao bubi1,
    grazie per l'aiuto ma non funziona cosi'..

    quindi ho cambiato metodo, faccio direttamente un 'ls' dei file..

    io ho bisogno di un log che a fianco del nome del file mi dice 'ok' o 'ko' e l'ho di produzione
    pero' cosi' come ho fatto mi dà problemi, perche' mi ha listato tutti i nomi dei file contenuti nella lista con di fianco scritto 'ko'..



    r="/root/read/"
    l="/root/out/"
    f="${r}Lista.txt"

    cat $f | while read e
    do
    a=`ls -1 $e`
    t=`echo $a | ls -lrt $e | awk '{print $8}'`
    d=`echo $a |ls -lrt | awk '{print $5}'`

    if [ "${a}" -ne "0" ]
    then
    echo " ${a} ok ${t} ${d}" >>$l/Lista.txt
    else
    echo " ${a} ko " >> $l/Lista.txt
    fi
    done
    il codice che ti ho dato funzionava con il problema che hai esposto nel primo post. Di quello che hai scritto in questo post non ho capito niente invece.
    Esattamente, di cosa hai bisogno tu? Elencare una directory, salvare i nomi dei files in un altro file, con un ok/ko di fianco? E in base a quale condizione ci deve essere l'ok/ko?

  8. #8
    l'ho rifatto perchè il tuo non funzionava.. mi dava errore sulla riga di
    `cat $CRON`

    deve leggere una lista.txt con elencati dei file, lo script deve vedere se essi ci sono
    anche solo con un ls

    e di questa lista ho bisogno di un output con tutti gli stessi file scritti all'interno con :

    NOME_FILE_PRESENTE "OK"
    NOME_FILE_NON_PRESENTE "KO"

    Cmq solo con il ciglo di "for" si puo' fare, avevi fatto giusto te!

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    quindi devi soltato verificare la presenza fisica dei nomi file sul disco??

    for a in `cat /root/read/Lista.txt`;do if [ -f "$a" ]; then echo "$a ok"; else echo "$a nok"; fi; done;

    ovviamente all'interno di Lista.txt ci deve essere il percorso completo della cartella dove si trovano i file, altrimenti lo devi aggiungere dinamicamente quando fai il controllo, qualcosa come if [ -f "/altro/percorso/$a" ];

  10. #10
    Perfetto! funziona!..

    ma se di fianco a NOME e STATUS se voglio mettere anche ora di produzione e size?
    Senza complicare troppo la sintassi cosa mi consigli??

    Grazie 1000

    Marco

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.