Bonjour,
J'ai créée un script shell qui fonctionne parfaitement sous Linux, mais qui ne marche pas sous HP-UX et SunOS.
Je voudrais savoir s'il y a beaucoup de differences entre le shell de ces 3 OS ? Est ce que la declaration de fonction varie d'un OS a l'autre ? Car ca me met une erreur a la declaration de ma premiere fonction...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145 #!/bin/bash #set -x ################################################################################ # # Nom: check_fs.sh # Description: Renvoi pour le FS monte le plus rempli, le nom de celui ci # pour le parametre "name", le pourcentage d'occupation pour le parametre # "used" et l'espace libre pour le parametre "free" # ################################################################################ # On recupere le type de systeme sur lequel on est dans une variable OS=`uname -s` # On recupere le chemin du fichier des FS a ne pas monitorer fichier="liste" # On recuperer le chemin du fichier des fichiers a monter (fstab) case $OS in SunOS) mountfic="/etc/vfstab";; *) mountfic="/etc/fstab" esac ################################################################################ # # Nom: montage() # Description: Retourne 1 si tous les FS devant etre monte au demarrage sont # montes, 0 sinon... # ################################################################################ function montage() { # On envoi le resultat de la commande dans le fichier temporraire 'fic' df > fic # On fait un premier parcours pour les entrees de 'fstab' ayant pour type de FS "ext2/ext3/ufs/hfs/vxfs/tmpfs/psfs" cat $mountfic |egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{ print $2}' | while read ligne do #on fait un parcours imbrique en lisant le fichier 'fic' contenant le resultat de la commande 'df' cat fic | awk '{ print $6}' | while read l do # On regarde si le FS de fstab est compris dans fic, ce qui voudrait dire qu'il est bien monte i=$(cat $fic | grep -w $ligne | wc -l) # Si c'est pas le cas alors on met a la fin d'un fichier temporaire 'result' 0 sinon on met 1 if test $i -eq 0 then echo 0 >> result else echo 1 >> result fi done done # S'il y a un 0 dans 'result' c'est qu'il y a eu un FS qui n'est pas monte, et donc on retourne 0 sinon on retourne 1 if test $(cat result | grep -w 0 | wc -l) -eq 0 then echo 1 else echo 0 fi # On efface le contenu de 'result' rm result } # On verifie que le fichier des FS exclus existe if test -e $fichier then function listeFS() { cat $1 | while read l do var=$var"|"$l echo $var > monfic done cat monfic | sed 's/|//' monfic rm monfic } listeFS=$(listeFS $fichier) else # listeFS="pasDeFichier" echo "fichier inexistant" exit fi ################################################################################ # # Nom: main # ################################################################################ case $OS in Linux) #FS monitoring name=`df -PT | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | sort -r -n -k 6 |awk '{ print $7}'|egrep -w -v $listeFS| head -1` case $1 in name) commande=$name;; used) commande=`df -PT | egrep -w $name | awk '{ print $6}' | sed "s/%//g"`;; free) commande=`df -PT | egrep -w $name | awk '{ print $5}' | sed "s/%//g"`;; mount) commande=$(montage);; esac;; HP-UX) # FS monitoring name=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -P |sort -r -n -k 5 | awk '{ print $6}' | grep -v $listeFS | head -1` case $1 in name) commande=$name;; used) commande=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -P | grep -w $listeFS |awk '{ print $5}' |sed "s/%//g"`;; free) commande=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -P | grep -w $listeFS |awk '{ print $4}'`;; mount) commande=$(montage);; esac ;; Solaris) # FS monitoring name=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -k | sort -r -n -k 5 | awk '{ print $6}' | grep -w -v $listeFS | head -1` case $1 in name) commande=$name;; used) commande=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -k |sort -r -n -k 5 |head -1 |awk '{ print $5}' |sed "s/%//g"`;; free) commande=`mount -v | egrep "ext2|ext3|ufs|hfs|vxfs|tmpfs|psfs" | awk '{print $3}' | xargs df -k |sort -r -n -k 5 |head -1 |awk '{ print $5}' |sed "s/%//g"`;; mount) commande=$(montage);; esac ;; esac echo $commande
Partager