Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/11/2014, à 17:19

Beuhlet_Reseau

[RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Bonjour,

for fic in `cat $nomserv`						
        do	

Que fait cette commande ?

Dernière modification par Beuhlet_Reseau (Le 04/12/2014, à 10:51)


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#2 Le 05/11/2014, à 17:42

pingouinux

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Bonjour,
C'est le début d'une boucle, où fic va prendre successivement pour valeur les mots du fichier (ou des fichiers) désigné(s) par $nomserv.

Hors ligne

#3 Le 05/11/2014, à 17:47

Watael

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

salut,

cette commande n'étant pas complète, elle ne fait rien, et l'interpréteur affichera une invite secondaire pour indiquer qu'il attend la suite, ou, dans le cas d'un script, écrira un message d'erreur.


pour info, la lecture d'un fichier, par l'interpréteur de commandes, ligne par ligne, se fait avec une boucle while vers laquelle on redirige le dit fichier.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 05/11/2014, à 17:54

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

pingouinux a écrit :

Bonjour,
C'est le début d'une boucle, où fic va prendre successivement pour valeur les mots du fichier (ou des fichiers) désigné(s) par $nomserv.

D'accord c'est une procédure standard d'utiliser Fic comme valeur temporaire ? (un tmp aurait été plus parlant yikes)

La suite du script se présente comme suit :

 for fic in `cat $nomserv`						
        do												

           if [ -f $hostref$fic ]						
           then				

                [ -f $delta$fic ] && cp -p  $delta$fic $deltaold$fic    
                [ -f $delta$fic ] && rm -f  $delta$fic
/usr/sbin/ping $fic > $verif                            

                if [ -s $verif ]
                then
                        rsh $fic cat /etc/hosts >> $host$fic
                        diff $host$fic $hostref$fic  >> $delta$fic

Si vous pouviez limite me dire ce qu'il fait ligne par ligne cela serait super car entre le fic, le rsh qui se balade  devant un autre fic je ne comprend plus rien...

Merci


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#5 Le 05/11/2014, à 22:31

ssdg

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

La bonne façon de faire c'est d'utiliser des noms de valeurs parlants. Si c'est un nom de fichier, "fic" est acceptable.
(pour un compteur: cpt , compteur, nblignes, nbPommes, pearCount,...)
(pour le nom d'un utilisateur: nom, name, nomFamille,nom_famille,...)

D'où il vient ce fichier?


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#6 Le 06/11/2014, à 01:24

pires57

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Cela ressemble horriblement a un exercice, je n'en dirais donc rien


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#7 Le 06/11/2014, à 10:32

nesthib

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

C'est surtout une méthode bien crade de faire n'importe quoi wink
Il serait beaucoup plus propre de faire :

while read fichier
do
  … "${fichier}"
done <$nomserv

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 06/11/2014, à 16:19

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

pires57 a écrit :

Cela ressemble horriblement a un exercice, je n'en dirais donc rien

Malheureusement non je travail, mais je reprend un script deja existant donc impossible de bien comprendre son fontionnement surtotu quand on est orienté Système Windows / Réseau Cisco à la base smile

Merci beaucoup pour votre aide je reviendrais vers vous si je bloque encore dans ce script de 255 lignes ....


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#9 Le 06/11/2014, à 16:30

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

if [ -f $hostref$fic ]						
           then				

                [ -f $delta$fic ] && cp -p  $delta$fic $deltaold$fic    
                [ -f $delta$fic ] && rm -f  $delta$fic
/usr/sbin/ping $fic > $verif                            

                if [ -s $verif ]
                then
                        rsh $fic cat /etc/hosts >> $host$fic
                        diff $host$fic $hostref$fic  >> $delta$fic

Etes vous d'accord sur le fait que cela fait beaucoup de ligne pour peu de chose ? J'ai l'impression que :

Si le fichier hostreffic existe on passe a la suite, si le fichier delta existe on le copie en delta et delta old, ensuite si le le fichier delta existe on supprime le fichier delta.

Sachant que l'on va réutiliser le fichier (deltafic) plus loin dans le script ..

PS : la commande cp -p n'existe même pas non ?

Dernière modification par Beuhlet_Reseau (Le 06/11/2014, à 16:33)


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#10 Le 06/11/2014, à 16:49

pingouinux

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Ces deux lignes

                [ -f $delta$fic ] && cp -p  $delta$fic $deltaold$fic    
                [ -f $delta$fic ] && rm -f  $delta$fic

peuvent être remplacées par

                [ -f $delta$fic ] && mv $delta$fic $deltaold$fic

Ceci est préférable (en cas d'espaces dans les noms de fichiers)

                [ -f "$delta$fic" ] && mv "$delta$fic" "$deltaold$fic"

PS : la commande cp -p n'existe même pas non ?

Il s'agit de la commande cp (voir man cp).

Hors ligne

#11 Le 06/11/2014, à 17:19

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

PS : la commande cp -p n'existe même pas non ?

Il s'agit de la commande [b]cp[/b] (voir [b]man cp[/b]).

Oui la commande Copy sauf que sur ce site :

cp -a archive files 
cp -f force copy by removing the destination file if needed 
cp -i interactive - ask before overwrite 
cp -l link files instead of copy 
cp -L follow symbolic links 
cp -n no file overwrite 
cp -R recursive copy (including hidden files) 
cp -u update - copy when source is newer than dest 
cp -v 

Le -p n'existe pas. Merci pour ton aide.


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#12 Le 06/11/2014, à 17:35

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

pingouinux peut tu peux me confirmer le fait que Ces 2 lignes

[ -f $delta$fic ] && cp -p  $delta$fic $deltaold$fic    
                [ -f $delta$fic ] && rm -f  $delta$fic

(En partant du principe que le fichier $deltafic existe)

Si il existe (=1 donc on fait la suite) cela copie ce dernier en 2 exemplaires : $deltafic et en $deltaold$fic. Ensuite après cela, si le fichier $delta$fic existe on le supprime avec tout la force du système Unix ?

(Si tu avais un mail on pourrait converser à propos des scripts et des améliorations possibles, tout sa dans un but pédagogique avéré pour ma montée en compétence. Après pourquoi pas me proposer un contrat dans une société d'infogérance ?)

Dernière modification par Beuhlet_Reseau (Le 06/11/2014, à 17:36)


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#13 Le 06/11/2014, à 19:15

Cyrille_tux

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

(En partant du principe que le fichier $deltafic existe)

Si il existe (=1 donc on fait la suite)

Généralement, lorsqu'une condition est vraie, le code retour est "0" et pas "1".

cela copie ce dernier en 2 exemplaires : $deltafic et en $deltaold$fic.

Non, si le fichier existe, alors on le copie, donc 1 exemplaire seulement.


(Si tu avais un mail on pourrait converser à propos des scripts et des améliorations possibles

A quoi sert un forum ?

[ -f $delta$fic ] && cp -p  $delta$fic $deltaold$fic    
                [ -f $delta$fic ] && rm -f  $delta$fic

Pourquoi faire deux tests "if" ?
Quel est l'intérêt de faire une copie pour supprimer ensuite le fichier ?

Hors ligne

#14 Le 13/11/2014, à 13:43

Beuhlet_Reseau

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Je ne sais pas du tout je suis chargé du remaniement des scripts donc je reprend à partir de l'existant je vais pas commencer à créer des scripts à mon niveau j'apprend petit à petit la logique.

Merci je reviendrais vers vous si je bloque encore.




PS : Vous savez le script envoie en piece jointe un resultat sur une liste de diffusion (mail). J'aurais aimé faire en sorte qu'à la place il me sorte un fichier .CSV de ce style la : nom  du serveur; action ou nom du script ; état; (si etat mauvais : la cause);
C'est possible de faire sa pour l'exploité avec un tableau par la suite ?


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne

#15 Le 16/11/2014, à 19:39

ssdg

Re : [RESOLU] for fic in `cat $nomserv` Que fai cette commande?

Si tu arrive à afficher les informations qui t'intéressent en plusieurs fois, tu peux aussi faire (une fois par ligne)
echo $info1";"$info2";"$info3.... >> fichiertemporaire

ensuite, un petit man sendmail (ou mail, ou quelque chose de ce genre)

et tu as ta réponse.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne