|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonjour,
J'ai un fichier qui contient une liste de hostname ($host) je souhaite effectuer une condition si le début de la ligne commence soit par "lx" soit par une IP. Mais j'ai une erreur lorsque je lance le script sur le else. Pour acceder a la machine linux je dois faire du ssh que je n'ai pas encore intégrer dans la fonction mais je souhaite avant tout savoir si ma condition fonctionne. ###################### fctlsgrpgene() { for h in $(cat $hosts) do ## condition test pour serveurs linux if [[${h} == | awk '/^[lx]/ {print}' ]] then echo "Group:GID:ListeMbrGroup" > $DIR_LOG/lsgrpgeneLinux.log cat /etc/group | awk -F: '{print $1":"$3":"$4}' >> $DIR_LOG/lsgrpgeneLinux.log cp $DIR_LOG/lsgrpgeneLinux.log "$DIR_LOG/lsgrpgeneLinux"$(dte)".sort" rm $DIR_LOG/lsgrpgeneLinux.log else for grp in $(rsh $h "lsgroup -a ALL") do echo "${h}:\c" >> $DIR_LOG/lsgrpgene.log rsh $h "lsgroup -c -a id admin adms $grp" | tail -1 >> $DIR_LOG/lsgrpgene.log done fi done echo "Hostname:Group:GID:AdminGrp:AdminUsers" > $DIR_LOG/lsgrpgene.sort sort -t: +1 $DIR_LOG/lsgrpgene.log >> $DIR_LOG/lsgrpgene.sort rm $DIR_LOG/lsgrpgene.log ########################################## Avez-vous une idée ? G. |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
dorisnemo <gberengue@unedic.fr> wrote:
> if [[${h} == | awk '/^[lx]/ {print}' ]] [snip] > Avez-vous une idée ? C'est trop gros, je vais encore passer pour un con, mais... ne manque-t-il pas un espace entre [[ et ${h} ? -- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
Stephane avec ta solution, j'ai un tout petit problème, mais vraiment
minuscule c'est qu'il me prend tous hostname avec "xi" sinon comment je fait pour remplacer par une valeur qui va contenir une adresse IP. Sinon ça fonctionne trés bien ;-) mieux qu'avant ! |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
On 10 May 2006 07:49:50 -0700, dorisnemo wrote:
> Stephane avec ta solution, j'ai un tout petit problème, mais vraiment > minuscule c'est qu'il me prend tous hostname avec "xi" case $h in [xi]*) selectionne les noms qui commencent par x ou i, n'etait-ce pas ce que tu demandais? > sinon comment je > fait pour remplacer par une valeur qui va contenir une adresse IP. > Sinon ça fonctionne trés bien ;-) mieux qu'avant ! Si tu veux matcher une IPv4 address sous la forme x.x.x.x, ou x sont des nombres decimaux uniquement: case $h in *[!0-9.] | *..* | *.*.*.*.* | .* | *. | *25[6-9]* | \ *2[6-9][!.]* | *[3-9][!.][!.]* | *[1-9][!.][!.][!.]*) echo not decimal quad IP address;; *.*.*.*) echo decimal quad IP address;; *) echo not decimal quad IP address;; esac Ou encore: if awk ' function isoctet(i) { return ((i ~ /^[0-9]+$/) && (i <= 255)) } BEGIN { if (split(ARGV[1], a, /[.]/) != 4) exit(1) for (i=1; i<=4; i++) if (!isoctet(a[i])) exit(1) exit(0) }' "$h" then echo decimal quad IP address;; else echo not decimal quad IP address;; fi -- Stephane |
|
![]() |
| Outils de la discussion | |
|
|