Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1060 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [scripte] Executer une commande pour chaque element d'un fichier...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[scripte] Executer une commande pour chaque element d'un fichier...

n°75452
TheKtulu
Changement de menu...
Posté le 11-03-2002 à 09:32:04  profilanswer
 

Voila mon probleme:
 
J'ai des serveurs dont j'aimerai bien faire un backup periodique de plusieurs fichier (variable selon le serveur). Cette liste sera dans un fichier texte.
La, j'aurai un scripte qui lancera une commande (comme un cp ou un scp) pour chacun de ces fichier.
 
Je sais que c'est possible avec awk, mais la franchement j'ai pas trouve  :/
 
Quelqu'un saurais comment faire?
 
Merci.


---------------
Grrrrr...
mood
Publicité
Posté le 11-03-2002 à 09:32:04  profilanswer
 

n°75716
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 05:53:19  profilanswer
 

:heink:  :bounce:


---------------
Grrrrr...
n°75718
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 07:52:50  profilanswer
 

tu peux faire ca simplement en perl avec un split  
tu trouves un delimiteur entre tes nom dans ton fichier et apres tu oiuvres le fichier tu fais un split sur ce delimiteur ,
 
puis tu execute ta commande sur chaque elem de ton tab .


---------------
Mes News
n°75719
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 07:55:40  profilanswer
 

R@NNIS a écrit a écrit :

tu peux faire ca simplement en perl avec un split  
tu trouves un delimiteur entre tes nom dans ton fichier et apres tu oiuvres le fichier tu fais un split sur ce delimiteur ,
 
puis tu execute ta commande sur chaque elem de ton tab .  




 
Euhhhh, en perl je connais que dalle et en scripting sh/bash/csh la je peux me debrouiller, mais pas en perl/python  :/


---------------
Grrrrr...
n°75720
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 08:06:33  profilanswer
 

ben c est pas sorcier ;)
 
je t ai jamais dis d utiliser python ;)  
perl suffit amplement pour ce ke tu veux faire ;)
 
sinon en script shell je suis certains ke d autres vont repondre bientot.


---------------
Mes News
n°75721
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 08:12:33  profilanswer
 

R@NNIS a écrit a écrit :

ben c est pas sorcier ;)
 
je t ai jamais dis d utiliser python ;)  
perl suffit amplement pour ce ke tu veux faire ;)
 
sinon en script shell je suis certains ke d autres vont repondre bientot.  




 
Oui, j'etais persuade que perl sais faire le boulot, mais j'y ai jamais touche alors c'est impossible pour moi d'en faire un   :wahoo:  
 
Vais voir si qq a deja eu le cas en shell script.
 
Merci qd meme  [:thektulu]


---------------
Grrrrr...
n°75722
the real m​anu
Régisseur
Posté le 12-03-2002 à 08:45:17  profilanswer
 

heu...
 
cp `cat fichier` rep/
 
 
:??: c ça que tu veux faire ?


---------------
TRM (c) ??? PAWAAAAA !
n°75723
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 08:49:46  profilanswer
 

THE REAL MANU a écrit a écrit :

heu...
 
cp `cat fichier` rep/
 
 
:??: c ça que tu veux faire ?  




 
 [:tdk04]  Comme quoi c'est si simple des fois, merci  :jap:


---------------
Grrrrr...
n°75724
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 08:50:20  profilanswer
 

lol ouaip c est simple ca :D
 
en gros en version perl pas top propre tu pourrais faire un truc du genre .
--------------------------
#!/usr/bin/perl  
 
main();
 
 
sub main
{
    $file = "/var/toto";
 
    open(FILE , $file);
    $i = 1;
 
    while (<FILE> )
    {
 chop;
 $tab[$i++]= $_;
    }
    $i--;
    while ($i)
    {
 printf("Saving file [%s] \n" , $tab[$i--]);
 system("echo ".$tab[$i]." "."Saved Succesfully." );
    }
    close (FILE);
 
}
---------------------
 
avec bien sur a la place du system ta commande sur chaque elem de ton fichier.
 
notre k il faut ke ton fichier source sois de cette tete la
 
----------
file1
file2
file3
----------
 
voila ;)
 
pas sorcier non plus la methode de manu

 

[jfdsdjhfuetppo]--Message édité par R@NNIS--[/jfdsdjhfuetppo]


---------------
Mes News
n°75725
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 08:51:34  profilanswer
 

Je prefere la single line de Manu sois dit en passant  [:thektulu]


---------------
Grrrrr...
mood
Publicité
Posté le 12-03-2002 à 08:51:34  profilanswer
 

n°75726
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 08:52:02  profilanswer
 

vi bien plus simple ;)
 
je croyais ke tu voulais faire un truc plus pointu ;)


---------------
Mes News
n°75728
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 08:54:37  profilanswer
 

R@NNIS a écrit a écrit :

vi bien plus simple ;)
 
je croyais ke tu voulais faire un truc plus pointu ;)  




 
 :non:  Bete truc.
 
En fait je veux que le soir, il y ait un script qui se lance (cron) et qui fasse le backup de la config de mes serveurs (le fichier avec la liste des fichier [clair ca  :lol: ]) Comme ca, si y'a un pepin, j'ai tous mes fichiers conf sous la main, reinstallation rapide su un crash disk arrive.  [:thektulu]


---------------
Grrrrr...
n°75729
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 09:04:44  profilanswer
 

héhé :)
 
mais fait gaffe car si ca plante c est souvent du a des fichiers de conf foireux la plupart du temps donc les backuper pour les remettre pas top ;)
 
trie les au moins par date tu pourras souvent voir a partir de kels modifs ca a chie.

 

[jfdsdjhfuetppo]--Message édité par R@NNIS--[/jfdsdjhfuetppo]


---------------
Mes News
n°75730
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 09:08:28  profilanswer
 

R@NNIS a écrit a écrit :

héhé :)
 
mais fait gaffe car si ca plante c est souvent du a des fichiers de conf foireux la plupart du temps donc les backuper pour les remettre pas top ;)
 
trie les au moins par date tu pourras souvent voir a partir de kels modifs ca a chie.  
 
 




 
Si ca plante, c'est parce qu'on s'est rendu compte qu'il y avait 30 volts (en spike) sur la prise de terre, les serveurs aiment pas  :p


---------------
Grrrrr...
n°75731
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 09:10:28  profilanswer
 

héhé c est pas top non plus ca ;)  
 
Z avez pas de salle serveur dediée avec un contrat specialisé de chez EDF ? disons ligne speciale ou trop petite boite ?

 

[jfdsdjhfuetppo]--Message édité par R@NNIS--[/jfdsdjhfuetppo]


---------------
Mes News
n°75732
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 09:12:09  profilanswer
 

R@NNIS a écrit a écrit :

héhé c est pas top non plus ca ;)  
 
Z avez pas de salle serveur dediée avec un contrat specialisé de chez EDF ? disons ligne speciale ou trop petite boite ?  
 
 




 
La salle des serveurs (ca fait seulement 4 mois qu'on a des UPS) est reliee sur la boite electrique normale. Si la cafetiere fait sauter les plombs, y'a plus de courrant en salle machine. Formidable non?  [:tdk04]


---------------
Grrrrr...
n°75733
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 09:13:35  profilanswer
 

héhé pas de café alors :D


---------------
Mes News
n°75734
TheKtulu
Changement de menu...
Posté le 12-03-2002 à 09:14:19  profilanswer
 

R@NNIS a écrit a écrit :

héhé pas de café alors :D  




 
 :non:  :lol:


---------------
Grrrrr...
n°75735
R@NNIS
Tout est possible ou presque.
Posté le 12-03-2002 à 09:18:27  profilanswer
 

[:tdk04]


---------------
Mes News
n°75822
el tarlo
Posté le 12-03-2002 à 13:50:39  profilanswer
 

R@NNIS a écrit a écrit :

lol ouaip c est simple ca :D
 
en gros en version perl pas top propre tu pourrais faire un truc du genre .
--------------------------
#!/usr/bin/perl  
 
main();
 
Tu ne respectes pas les regles de l'indentation c'est i-li-sible !!
 
sub main
{
    $file = "/var/toto";
 
    open(FILE , $file);
    $i = 1;
 
    while (<FILE> )
    {
 chop;
 $tab[$i++]= $_;
    }
    $i--;
    while ($i)
    {
 printf("Saving file [%s] \n" , $tab[$i--]);
 system("echo ".$tab[$i]." "."Saved Succesfully." );
    }
    close (FILE);
 
}
---------------------
 
avec bien sur a la place du system ta commande sur chaque elem de ton fichier.
 
notre k il faut ke ton fichier source sois de cette tete la
 
----------
file1
file2
file3
----------
 
voila ;)
 
pas sorcier non plus la methode de manu  
 
 



n°76079
R@NNIS
Tout est possible ou presque.
Posté le 13-03-2002 à 00:48:34  profilanswer
 

ouaip lol ben le copier coller a chier donc pas d indentation lol
 
tu copie colle sous emacs tu vas au debit de la premiere { et tu fais Ctrl + Q  et hop tout indenté...

 

[jfdsdjhfuetppo]--Message édité par R@NNIS--[/jfdsdjhfuetppo]


---------------
Mes News
n°76164
Phoenix
Posté le 13-03-2002 à 13:35:52  profilanswer
 

En bash, tu peut utiliser find + cpio + gzip ou find + [r,s]cp
 
Si tu utilise cpio, ça donne  un truc du style
 
find / -path '/proc/*' -prune -o -path '/tmp/*' -prune -o -path '/boot' -prune -o -path '/home/*' -prune -o -print | cpio -H newc -ov | gzip -9v > /home/cpio/slash_cpio.gz
 
-path permet d'exclure les rep. à ne pas sauvegarder (/boot car il vaut mieux faire un cpio séparé pour être sûr de le retaurer au début du disque) /tmp pour éviter les fioritures.
 
Encsuite gzip pour gagner de la place :eek: ;) mais ça impose une FIFO pour décompresser car cpio ne sait pas décompresser et extraire en même temps
 
Donc pour restaurer ta sauvegarde : (attention, pas de moyen pour restaurer tel ou tel fichier, il faut tout restaurer puis recopier ce qui manque !)
 
mkfifo /tmp/fifo
gzip -dc /REP_du_cpio/slash_cpio.gz & #dezippage du cpio
cpio -idv --no-absolute-filenames < /tmp/fifo #décpio-isation du cpio ;)
 
 
 
Sinon si c'est un copie sélective fichier / fichier il faudrait effectivement utilise awk (connais pas assez :( ) ou simplement sed
 
un truc genre:
 
NB_LINES=`wc -l file_liste`
CPT=
CHAINE=
while [ $NB_LINES -lt $CPT ]
do
  CHAINE=`sed -e ''$CPT'p' file_liste`  # permet de récupérer la ligne $CPT du fichier  
  rcp $CHAINE host: /BACKUP
  CPT=$[$CPT+1]     # me souviens jamais comment fonctionne let :D (let CPT++  :??: )
 
done
 
C'est assez lent à cause de sed et c'est de tête si sed  fonctionne pas, dis le j'ai un script qui tourne comme ça j'aurais qu'a le retrouver et à la poser ici.
 
 
Bon backup

 

[jfdsdjhfuetppo]--Message édité par Phoenix--[/jfdsdjhfuetppo]

n°76180
grungy
Posté le 13-03-2002 à 14:34:48  profilanswer
 

salut,  
 
y a aussi:
 
#!/bin/bash
 
for a in `cat liste_des_files_a_sauver`
do
    cp $a /sauv
done

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [scripte] Executer une commande pour chaque element d'un fichier...

 

Sujets relatifs
recherche commandefichier /etc/inetd.conf
Commande VI sous UNIX[Bizarre] Droits de suppression fichier ou répertoire
Versionning de fichier sous unixLA commande "lex", dans quel Package ???? [LEX]
Comment faire pour qu'un fichier s'ouvre l'application que l'on veut..Probleme de taille de fichier ogg avec Grip
[ISO] Comment créer une iso en ligne de commande ?faire une image de partition avec la commande DD ?!
Plus de sujets relatifs à : [scripte] Executer une commande pour chaque element d'un fichier...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR