![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
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` |
|
||||
|
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 ... |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|