The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
while-Schleife innerhalb while-Schleife panknil Shell Programmierung und Scripting 0 01-07-2008 12:49 PM
For-Schleife xramm HP-UX 3 10-10-2007 03:20 PM
While-Schleife hemangjani Shell Programmierung und Scripting 2 11-02-2006 11:01 AM
for-Schleife munnabhai1 Shell Programmierung und Scripting 3 04-06-2006 03:30 PM
wie man die ähnliche Funktion in der while-Schleife oder for-Schleife trynew Shell Programmierung und Scripting 3 06-17-2002 12:09 PM

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 03-17-2008
rsullivan rsullivan is offline
Registrierte Nutzer
  
 

Join Date: März 2008
Beiträge: 1
sh Schleife Brauchen Sie Hilfe

Hi,

Ich habe folgende Skript, das ein Backup über cpio zu einer NFS Mount. Das Problem ist, dass ich nur zu sein scheinen immer root. Ich bin mir nicht sicher, was ich falsch hier, aber es funktioniert nicht. Im Anschluss wird das gesamte Skript. Ich habe die Bereiche, in denen ich glaube, ich habe ein Problem oder zumindest relevant, denke ich.

#! / bin / sh
#
# Set Konfigurationsvariablen
#
NFSMOUNT \u003d '/ mnt /nfs"
BACKUP_LOG \u003d "/ usr / local / backup_logs"
EXCLUDE_FS \u003d '/ mnt /nfs"
HARDWARE_LOG \u003d "/ var / adm / messages"

Export NFSMOUNT BACKUP_LOG EXCLUDE_FS HARDWARE_LOG

# Get date in MMTTJJ-Format
MTJ \u003d `date +% m% d% Y"

if [! -d $ () BACKUP_LOG-o! -w $ (BACKUP_LOG)], dann
echo "$ (BACKUP_LOG) ist nicht vorhanden oder nicht beschreibbar"
exit 1
fi

echo "# # # BACKUP ab` date `"
# LOG_START ist die Anzahl der Zeilen in unserer Hardware-Protokoll
# Wenn das Backup begonnen. Wir sind nicht mit etwas
#, Die vor der jetzt.
LOG_START \u003d `wc-l <$ (HARDWARE_LOG)"
# Strip führende und nachfolgende Leerzeichen

LOG_START \u003d `expr $ () LOG_START"

BACKUPTYPE \u003d "cpio"

# Liste der Unix-Datei-Systemen, um
MOUNTEDSYSTEMS \u003d `df-F ufs | cut-d" "-f1 | sort"

# Entfernen ausgeschlossen Datei-Systeme aus der Liste
für FS in $ MOUNTEDSYSTEMS
tun
case "$ (EXCLUDE_FS)" in
# Wenn das nicht nichts tun
* "$ (FS) "*);;
# Eintrag hinzufügen zur Liste
*) Case "$ (Dateisystemabschnitt)" in
# Liste leer ist, so ist dies der erste Eintrag
'') Dateisystemabschnitt \u003d "$ (FS)";
# Liste enthält Einträge, so fügen Sie zur Liste
*) Dateisystemabschnitt \u003d "$ (Dateisystemabschnitt) $ (FS)";
esac;;
esac
getan

cd /
if [ "$ BACKUPTYPE" \u003d "dump"], dann
# Backup mit dump
für FS in $ () Dateisystemabschnitt
tun
echo "Dumping $ (FS) auf $ () NFSMOUNT" | \
tee-a $ BACKUP_LOG () / bu.ufsdump. MDY $ ()
/ usr / sbin / ufsdump 0fu $ (NFSMOUNT) $ (FS) 2> & 1 | \
# Wir nur mit den letzten beiden Zeilen der Ausgabe
#, um festzustellen, ob es sich um eine erfolgreiche Dump
tee-a $ BACKUP_LOG () / bu.ufsdump. MDY $ () | tail -3

# Anzahl der Dump-Datei-System
FS_COUNT \u003d `expr $ (FS_COUNT) + 1`
getan
sonst

# Backup mit cpio
für FS in $ () Dateisystemabschnitt
tun
echo "Schreiben cpio-Archiv von $ (FS) auf $ (NFSMOUNT)" | \
tee-a $ BACKUP_LOG () / bu.cpio. $ () MDY. ERR \
>> $ (BACKUP_LOG) / bu.cpio. MDY $ ()

# Die Ausgabe finden wird immer relativ zum Root
finden. $ (FS)-print-xdev | \

# Verwenden Sie sed zu ändern ". /" zurück zu "/" so Solaris cpio keine Rinde
sed -e 's / ^ \. \ / $ / \ / /' | \
cpio-OC-O $ (NFSMOUNT) / `hostname`. MDY $ () \
2>> $ (BACKUP_LOG) / bu.cpio. $ () MDY. ERR \
1>> $ (BACKUP_LOG) / bu.cpio. MDY $ ()

# Count cpio-Archiv-Datei-System
FS_COUNT \u003d `expr $ (FS_COUNT) + 1`
getan

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

# Dateisystem-Informationen anzeigen, die gerade gesichert
echo "# # # Derzeit gemounteten Dateisysteme:"
df-k $ (Dateisystemabschnitt)
echo "###"

LOG_END \u003d `wc-l <$ (HARDWARE_LOG)"
# Streifen führende und nachfolgende Leerzeichen
LOG_END \u003d `expr $ () LOG_END"
if [ "$ (LOG_BEGIN)"-ne "$ (LOG_END)"]; dann
Bericht # Fehler in der Registrierung während der Sicherung
# Grep zusätzliche Zeilen zu entfernen normalen Nachrichten, die in Ihrem
# System-Protokollierung Skript
echo "# # # System-Logs, die während der Sicherung:"
cat $ (HARDWARE_LOG) | \
sed -e "1, $ (d) LOG_START" | \
grep-v "Verbindung von" | \
grep-v "verweigert Verbindung von" | \
nawk '(print substr ($ 0,1,78)); \
Länge> 78 (print "" substr ($ 0,79)) '

echo "###"
fi
# Entfernen Sie alte Log-Dateien
if [ "$ (BACKUPTYPE)" \u003d "cpio"], dann
cd $ (BACKUP_LOG)
finden. -mtime +14-Follow-exec rm () \;
ls-lt $ (BACKUP_LOG) / *
echo
fi

echo "Backup abgeschlossen" `date`
  #2 (permalink)  
Old 03-18-2008
Ära
Gast
  
 

Beiträge: n / a
Bits: 0 [Banking]
Was sind die symtoms? Es ist ein bisschen schwer zu erraten, wo Sie falsch läuft, indem man sich einfach den Code.

Ich habe ein kleines Problem hier:


Code:
case " ${EXCLUDE_FS} " in
# If its excluded do nothing
*" ${FS} "*);;

Sie sind die EXCLUDE_FS haben Räume auf beiden Seiten, damit diese an, aber Sie scheinen nicht, dass diese Räume dort waren Sie die Zuordnung EXCLUDE_FS. Jede Erweiterung der "Fall"-Code, um Spiele zu Beginn, Ende, und allein, oder fügen Sie diese Räume auf die Zuteilung. (Letzteres ist einfacher, sondern eher unbemerkt von jemand, der schnell aktualisiert die Exclude-Liste später.)

Der Fall, wenn Sie die Aktualisierung Dateisystemabschnitt scheint unnötig kompliziert. Ein Leerzeichen am Anfang der Liste, wenn es leer scheint harmlos, zu urteilen, was man damit macht später im Code.

Mir, ich würde EXCLUDE_FS in einen regulären Ausdruck, Filter und die Ausgabe von df durch egrep, und los, dass die gesamte BLOB-Code, ohnehin.

Was ist der Sinn des Exports alle diese Variablen? Du bist nicht auf die Sub-brauchen, sind Sie?

Sie scheinen zu fehlen einem Bindestrich vor die Möglichkeit, sich hier:


Code:
grep v "refused connection from " | \

Kann nicht sehen, was mache ich falsch mit der CPIO Teil, sorry.

Proper Einzug wäre wahrscheinlich ein bisschen helfen, auch hier ...
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 11:33 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0