The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
ciclo while all'interno ciclo while panknil Shell scripting e di programmazione 0 01-07-2008 12:49 PM
Per loop xramm HP-UX 3 10-10-2007 02:20 PM
Mentre Loop hemangjani Shell scripting e di programmazione 2 11-02-2006 11:01 AM
per il ciclo munnabhai1 Shell scripting e di programmazione 3 04-06-2006 02:30 PM
come ottenere la funzione analoga a ciclo while loop o per trynew Shell scripting e di programmazione 3 06-17-2002 11:09 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 03-17-2008
rsullivan rsullivan is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 1
sh loop Serve un po 'di aiuto

Salve,

Ho il seguente script che esegue un backup tramite cpio ad un NFS montare. Il problema è che mi sembra di essere solo ottenere root. Non sono sicuro di quello che sto facendo di sbagliato, ma qui non è funzionante. In seguito è l'intero script. Ho evidenziato i settori in cui credo di avere un problema o almeno rilevante, credo.

#! / bin / sh
#
Impostare le variabili di configurazione #
#
NFSMOUNT \u003d '/ mnt /nfs'
BACKUP_LOG \u003d '/ usr / local / backup_logs'
EXCLUDE_FS \u003d '/ mnt /nfs'
HARDWARE_LOG \u003d '/ var / adm / messages'

esportazione NFSMOUNT BACKUP_LOG EXCLUDE_FS HARDWARE_LOG

# ArrivareProspettiPartner data nel formato GGMMAA
MDY \u003d `date +% m% d% Y`

if [! -d $ () BACKUP_LOG-o! -w $ () BACKUP_LOG], quindi
echo "$ () BACKUP_LOG non esiste o non è scrivibile"
exit 1
fi

echo "# # # backup a partire da` date `"
# LOG_START è il numero di linee nel nostro hardware Accedi
# Quando il backup è iniziata. Noi non siamo interessati a qualcosa
# Che si è verificato prima d'ora.
LOG_START \u003d `wc-l <HARDWARE_LOG $ ()`
# Striscia di leader e di spazi

LOG_START \u003d `expr $ () LOG_START»

BACKUPTYPE \u003d "cpio"

# Ottenere l'elenco dei file system UNIX per eseguire il backup
MOUNTEDSYSTEMS \u003d `df-F ufs | cut-d ''-f1 | sort`

# Togliere esclusi dalla lista dei file system
per FS in $ MOUNTEDSYSTEMS
fare
case "$ () EXCLUDE_FS" in
# Se la sua esclusione non fare nulla
* "$ (FS) "*);;
# Entrata Aggiungi alla lista
*) Case "$ () filesystem" in
# List è vuoto quindi questa è la prima voce
'') Filesystem \u003d "$ (FS)";
# Elenco contiene voci così aggiungere alla lista
*) Filesystem \u003d "file system $ () $ (FS)";
esac;
esac
fatto

cd /
if [ "$ BACKUPTYPE" \u003d "dump"], quindi
# Backup utilizzando discarica
per le FS al filesystem $ ()
fare
echo "dumping $ (FS) $ () NFSMOUNT" | \
tee-a $ () BACKUP_LOG / bu.ufsdump. MDY $ ()
/ usr / sbin / ufsdump 0fu $ NFSMOUNT) ($ (FS) 2> & 1 | \
# Siamo interessati solo alle ultime due linee di produzione
# per determinare se questo è stato un successo discarica
tee-a $ () BACKUP_LOG / bu.ufsdump. MDY $ () | coda -3

# Conte discarica di file system
FS_COUNT \u003d `expr $ (FS_COUNT) + 1`
fatto
altro

# Backup utilizzando cpio
per le FS al filesystem $ ()
fare
echo "Scrittura cpio archivio di $ (FS) a $ () NFSMOUNT" | \
tee-a $ () BACKUP_LOG / bu.cpio. MDY $ (). err \
>> $ () BACKUP_LOG / bu.cpio. MDY $ ()

# L'output di trovare sempre essere relativi a root
trovare. $ (FS)-print-xdev | \

# Usa sed per cambiare ". /" torna a "/" così Solaris cpio non corteccia
sed -e 's / ^ \. \ / $ / \ / /' | \
cpio-oc-O $ () NFSMOUNT / `hostname`. MDY $ () \
2>> $ () BACKUP_LOG / bu.cpio. MDY $ (). Err \
1>> $ () BACKUP_LOG / bu.cpio. MDY $ ()

# Count cpio archivio di file system
FS_COUNT \u003d `expr $ (FS_COUNT) + 1`
fatto

cat $ () BACKUP_LOG / bu.cpio. MDY $ (). err
fi

# Mostra le informazioni del filesystem che è stato appena eseguito il backup
echo "# # # Attualmente i file system montati:"
df-k $ () filesystem
echo "###"

LOG_END \u003d `wc-l <HARDWARE_LOG $ ()`
# Striscia di leader e di spazi
LOG_END \u003d `expr $ () LOG_END»
if [ "$ () LOG_BEGIN"-ne "$ (LOG_END)"]; poi
# Relazione errori durante il backup di log
# Grep aggiungere ulteriori linee di rimuovere i messaggi che appaiono normali nella vostra
# Script di sistema di registrazione
echo "# # # Sistema log generato durante il backup:"
cat HARDWARE_LOG $ () | \
sed -e "1, $ () LOG_START d" | \
grep-v "da collegare" | \
v grep "Connessione rifiutata da" | \
nawk '(print substr ($ 0,1,78)); \
lunghezza> 78 (print "" substr ($ 0,79)) '

echo "###"
fi
# Rimuovete i vecchi file di log
if [ "$ (BACKUPTYPE)" \u003d "cpio"], quindi
cd $ () BACKUP_LOG
trovare. -mtime +14-follow-exec rm () \;
$ ls-lt BACKUP_LOG () / *
echo
fi

echo "Finito di backup a" `date`
  #2 (permalink)  
Old 03-18-2008
epoca
Valutazione
  
 

Messaggi: n / a
Bit: 0 [Banking]
Quali sono le symtoms? E 'un po' difficile da indovinare dove si sta andando storto solo guardando il codice.

Ho notato un piccolo problema qui:

Codice:
case " ${EXCLUDE_FS} " in
# If its excluded do nothing
*" ${FS} "*);;
Sei EXCLUDE_FS che richiedono di avere spazi di entrambe le parti al fine di corrispondere a questo, ma non sembrano avere quegli spazi fino c'erano sei assegnando EXCLUDE_FS. Ciascuna espandere il "caso" codice per gestire le partite all'inizio, alla fine, e solo, o aggiungere tali spazi per l'assegnazione. (La seconda è più facile, ma più probabilmente per passare inosservato rapidamente da qualcuno che aggiorna la lista escludere più tardi.)

Il caso in cui si sta aggiornando i filesystem sembra inutilmente complicato. Aggiungere uno spazio all'inizio della lista, se è vuota sembra innocuo, a giudicare da ciò che si fa in un secondo momento con il codice.

Me, vorrei girare EXCLUDE_FS in una espressione regolare, e filtrare l'output di df attraverso egrep, e liberarsi di tutto il blob di codice, comunque.

Qual è il punto di esportare tutte queste variabili? Non sei invocando subcommands che ne hanno bisogno, sei tu?

Lei sembra un po 'la mancanza di fronte alla facoltà di qui:

Codice:
grep v "refused connection from " | \
Non riesco a vedere cosa c'è di sbagliato con la CPIO parte, mi spiace.

La corretta indentazione probabilmente aiutare un po 'anche qui ...
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 02:16 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0