The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
tandis que l'intérieur tandis que la boucle la boucle panknil De programmation et de script Shell 0 01-07-2008 12:49 PM
Pour la boucle xramm HP-UX 3 10-10-2007 03:20 PM
Si Loop hemangjani De programmation et de script Shell 2 11-02-2006 11:01 AM
boucle munnabhai1 De programmation et de script Shell 3 04-06-2006 03:30 PM
la façon d'obtenir la même fonction en tout ou en boucle la boucle trynew De programmation et de script Shell 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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 03-17-2008
rsullivan rsullivan is offline
Registered User
  
 

Join Date: Mar 2008
Messages: 1
sh boucle Besoin d'aide

Salut,

J'ai le script suivant qui fait un backup via cpio à une NFS mount. Le problème est que je ne me semblent avoir root. Je ne suis pas sûr de ce que je fais mal, mais il ne fonctionne pas. Voici le script entier. J'ai mis en évidence les domaines où je pense avoir un problème ou au moins pertinente, je pense.

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

l'exportation NFSMOUNT BACKUP_LOG EXCLUDE_FS HARDWARE_LOG

# Récupérer date en format MMJJAA
MDY \u003d `date +% m% d% y`

if [! -d $ () BACKUP_LOG-o! -w $ (BACKUP_LOG)], puis
echo "$ () BACKUP_LOG n'existe pas ou n'est pas accessible en écriture"
exit 1
fi

echo "# # # Backup à partir de` date `"
# LOG_START est le nombre de lignes dans notre journal de matériel
# Lors de la sauvegarde commence. Nous ne sommes pas concernés par ce
# Qui ont eu lieu avant maintenant.
LOG_START \u003d `wc-l <$ ()` HARDWARE_LOG
# Strip leader et les espaces

LOG_START \u003d `expr $ ()` LOG_START

BACKUPTYPE \u003d "cpio"

# Obtenir la liste des systèmes de fichiers unix pour sauvegarder
MOUNTEDSYSTEMS \u003d `df-F ufs | cut-d ''-f1 | sort»

# Suppression des systèmes de fichiers exclus de la liste
FS en $ MOUNTEDSYSTEMS
faire
case "$ () EXCLUDE_FS" dans
# Si ses exclus ne rien faire
* "$ (FS) "*);;
# Ajouter une entrée à la liste
*) Case "$ () FileSystems" dans
# Liste est vide si ce n'est la première entrée
'') FileSystems \u003d "$ (FS)";;
# Liste contient des entrées afin d'ajouter à la liste
*) FileSystems \u003d "$ (FileSystems) $ (FS)";;
esac;;
esac
fait

cd /
if [ "$ BACKUPTYPE" \u003d "dump"], puis
# Backup utilisant dump
pour les FS dans $ () FileSystems
faire
echo "Dumping $ (FS) $ () NFSMOUNT" | \
tee-a $ BACKUP_LOG () / bu.ufsdump. MDY $ ()
/ usr / sbin / ufsdump 0fu $ NFSMOUNT) ($ (FS) 2> & 1 | \
# Nous ne concerne que les deux dernières lignes de production
# pour déterminer si cela a été un succès dump
tee-a $ BACKUP_LOG () / bu.ufsdump. MDY $ () | tail -3

# Count dump du système de fichier
FS_COUNT \u003d `expr $ FS_COUNT) (+ 1»
fait
autre

# Backup utilisant cpio
pour les FS dans $ () FileSystems
faire
echo "Writing cpio archive de $ (FS) pour $ () NFSMOUNT" | \
tee-a $ BACKUP_LOG () / bu.cpio. MDY $ (). err \
>> $ (BACKUP_LOG) / bu.cpio. MDY $ ()

# La sortie de trouver toujours être relatif à la racine
trouver. $ (FS)-print-xdev | \

# Utilisation sed pour le changement ". /" à "/" pour Solaris cpio ne écorce
sed -e 's / ^ \. \ / $ / \ / /' | \
cpio-oc-O $ (NFSMOUNT) / `hostname`. MDY $ () \
2>> $ (BACKUP_LOG) / bu.cpio. MDY $ (). Err \
1>> $ (BACKUP_LOG) / bu.cpio. MDY $ ()

# Compter cpio archive du système de fichier
FS_COUNT \u003d `expr $ FS_COUNT) (+ 1»
fait

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

# Affichage des informations de fichiers qui vient sauvegardés
echo "# # # Documents systèmes de fichiers montés:
df-k $ () FileSystems
echo "###"

LOG_END \u003d `wc-l <$ ()` HARDWARE_LOG
# Strip principal et les espaces
LOG_END \u003d `expr $ ()` LOG_END
if [ "$ (LOG_BEGIN)"-ne "$ () LOG_END"], puis
# Rapport de log d'erreurs pendant la sauvegarde
# Grep ajouter des lignes à supprimer normal dans vos messages
# Script système de journalisation
echo "# # # Système de logs générés pendant la sauvegarde:"
cat $ HARDWARE_LOG () | \
sed -e "1, $ (d) LOG_START" | \
grep-v "se connecter" | \
v grep "a refusé de connexion" | \
nawk '(print substr ($ 0,1,78)); \
Longueur> 78 (print "" substr ($ 0,79)) '

echo "###"
fi
# Supprimer les anciens fichiers de log
if [ "$ (BACKUPTYPE)" \u003d "cpio"], puis
cd $ () BACKUP_LOG
rechercher. -mtime +14-exec rm-suivre () \;
ls-lt $ BACKUP_LOG () / *
echo
fi

echo "Backup Terminé à" `date`
  #2 (permalink)  
Old 03-18-2008
ère
Guest
  
 

Messages: n / a
Bits: 0 [Banking]
Quels sont les symptômes? C'est un peu difficile de deviner où l'on va mal juste en regardant le code.

J'ai remarqué un petit problème ici:


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

Vous êtes exigeant EXCLUDE_FS d'avoir des espaces des deux côtés pour ce match, mais vous ne semblent pas disposer de ces espaces, il y avait vous affectez EXCLUDE_FS. Soit élargir le "cas" pour gérer matches au début, fin, et lui seul, ou d'ajouter des espaces à la cession. (Ce dernier est plus facile, mais plus de chances de passer inaperçue par quelqu'un qui a rapidement mises à jour de la liste d'exclusion plus tard.)

Le cas où vous mettez à jour FileSystems semble inutilement compliqué. Ajout d'un espace au début de la liste si elle est vide semble inoffensif, à en juger par ce que vous en faites plus tard dans le code.

Moi, je voudrais tourner EXCLUDE_FS dans une expression régulière, et de filtrer la sortie de df par egrep, et se débarrasser de toute cette blob de code, de toute façon.

Quel est le point de l'exportation de toutes ces variables? Vous n'êtes pas invoquer subcommands qui en ont besoin, et vous?

Vous semblez à l'absence d'un tiret devant le choix ici:


Code:
grep v "refused connection from " | \

Vous ne pouvez pas voir ce qui ne va pas avec la partie CPIO, désolé.

Proper indentation probablement aider un peu, ici aussi ...
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 03:35 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0