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 23/04/2008, à 09:54

B@rtounet

Aide pour un script

Bonjour,
pourriez vous m'aider pour mettre en place un petit script...

C'est assez simple, je voudrais partir d'un fichier d'origine fic0 et le copier par exemple ailleur sur le disque en fic1, et copier ce fic1 en fic2 et copier ce fic2 en fic3...

En fait je voudrais faire de copie de copie durant un cycle don je déciderais le temps de la boucle.

si vous pouviez juste m'aiguiller sur la méthode à suivre

Hors ligne

#2 Le 23/04/2008, à 10:13

Ultandir

Re : Aide pour un script

Bonjour,

Quel(s) langage(s) connait tu?
Ce que tu veut est faisable en plusieurs langages ( plus facilement en certain que dans d'autre ).
Dit moi ton langage de prédilection.


Fedora Cambridge i386
Zenwalk 5.2
-------------
Il y a 10 types de personnes : celles qui connaissent le binaire, et celles qui ne le connaissent pas.

Hors ligne

#3 Le 23/04/2008, à 10:17

delphin2

Re : Aide pour un script

Bonjour,

En bash ( pas tout à fait ):

duree = 60 #en secondes
time = 0

fichier = chemin_fichier

tant que time < duree
       cp fichier chemin
       chemin = quelque chose
       time+=1

etc.... tu crée une arborescence pour descendre dans les dossiers par exemple pour copier le fichier dans l'arborescence et dans le tant que au fur et à mesure tu descends dans l'arborescence

Un truc comme ca?

Dernière modification par delphin2 (Le 23/04/2008, à 10:23)

Hors ligne

#4 Le 23/04/2008, à 10:22

yohann

Re : Aide pour un script

#!/bin/bash
## 
## Usage: my_cp file_to_cpy nb_cpy time_between_cpy
cmpt=0
while [$cmpt != $2]; do
   cmpt=$(($cmpt+1))
   echo "copying $1 into ${1}${cmpt}
   cp $1 ${1}${cmpt} 
   echo "waiting $3 seconds"
   sleep $3
done
exit 0

je crois que ça ressemble a ça, c'est tres porky car pas de traitement correct des option ou des erreurs, mais pour un script perso ça devrait le faire

exemple d'utiliastion:

./my_cpy.sh test.txt 3 10

devrait copier le fichier test.txt 3 fois en test.txt1 test.txt2 test.txt3
la premier copie a lieu instantanement, puis on attent 10 secondes avant de faire la deuxieme puis on attent 10 secondes avant la troisieme et enfin on attend 10 secondes avant de terminer le script (oui c'est moche roll)

si les parametre sont pas bon tant pis on fait de la merde.

chmod u+x my_cpy.sh
pour le rendre executable


bonne chance

PS: script absolument pas testé j'espere que ça fonctionne


edit : double grilled...
reedit: recherche script dans la doc et y a tout

Dernière modification par yohann (Le 23/04/2008, à 10:24)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#5 Le 23/04/2008, à 10:24

Ultandir

Re : Aide pour un script

@delphin2, yohann :

C'est un shell un peu barbare sur les bords ca wink
A ce moment la il serait mieux a mettre le nom du fichier et le nombres de copies en parametre
avec verifications pour eviter les problèmes :

if [ $# -ne 2 ]
then
         echo "Usage : deux argument ==> nom_du_fichier nombre_de_copies"
fi

compt=0
//boucle et fin ^^

Dernière modification par Ultandir (Le 23/04/2008, à 10:27)


Fedora Cambridge i386
Zenwalk 5.2
-------------
Il y a 10 types de personnes : celles qui connaissent le binaire, et celles qui ne le connaissent pas.

Hors ligne

#6 Le 23/04/2008, à 10:28

yohann

Re : Aide pour un script

if [ $# -ne 3 ]
then
         echo "Usage : trois argument ==> nom_du_fichier nombre_de_copies delais_entre_copies"
fi

Dernière modification par yohann (Le 23/04/2008, à 10:28)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#7 Le 23/04/2008, à 10:57

delphin2

Re : Aide pour un script

Ultandir a écrit :

@delphin2, yohann :

C'est un shell un peu barbare sur les bords ca wink
A ce moment la il serait mieux a mettre le nom du fichier et le nombres de copies en parametre
avec verifications pour eviter les problèmes :

if [ $# -ne 2 ]
then
         echo "Usage : deux argument ==> nom_du_fichier nombre_de_copies"
fi

compt=0
//boucle et fin ^^

C'est clair tu as parfaitement raison big_smile:D roll pardon pardon big_smile

Dernière modification par delphin2 (Le 23/04/2008, à 10:58)

Hors ligne

#8 Le 23/04/2008, à 11:06

Ultandir

Re : Aide pour un script

Tu es pardonné pour cette fois....... lol


Fedora Cambridge i386
Zenwalk 5.2
-------------
Il y a 10 types de personnes : celles qui connaissent le binaire, et celles qui ne le connaissent pas.

Hors ligne

#9 Le 23/04/2008, à 15:49

B@rtounet

Re : Aide pour un script

Je suis pas developpeur, j'ai essayé de me dépatouiller
j'ai pondu ca... ca fonctionne,
qu'en pensez vous ?

#!/bin/bash
#MARTINEAU Antony
#This script make a file copy point at point and check md5sum before and after the transfert

###############################
ramdisk="/tmpramfs"
if [ -z $(mount | grep /tmpramfs | awk '{print $3}') ]; then
        if [ -z $(ls / | grep tmpramfs) ]; then
        mkdir /tmpramfs
        mount -t tmpfs -o size=16M, tmpfs /tmpramfs > /dev/null 2>&1
        else
                mount -t tmpfs -o size=16M, tmpfs /tmpramfs > /dev/null 2>&1
        fi
fi
###############################
sourcefile="/home/antony/inetgwfullbackup.tar.gz"
targetdest="/home/antony/"
md5srcf="$ramdisk/md5src"
md5targf="$ramdisk/md5targ"
loop="10"
fic=$(echo  $sourcefile | awk -F\/ '{print $NF}') #last word
countok="0"
counterror="0"
#cp $sourcefile $targetdest$fic.orig

md5src=$(md5sum $sourcefile | awk '{print $1}')

for i in `seq 1 $loop`
do
        cp $sourcefile $targetdest$fic.$i
        rm -f $sourcefile
        sourcefile=$targetdest$fic.$i
        md5targ=$(md5sum $sourcefile | awk '{print $1}')
        echo $md5targ
        if [ "$md5src" = "$md5targ" ]
                then
                        echo "Test md5 OK beetween Source and target"
                        countok=$(($countok + 1))
                else
                        echo "Error !! md5 is different beetween Source and target"
                        countok=$(($counterror + 1))
        fi

done

Hors ligne

#10 Le 23/04/2008, à 17:38

Ultandir

Re : Aide pour un script

Si ca marche : tant mieux wink
Fait quand même une vérification du nombre d'arguments ( cf code au dessus ).

Pour des trucs dans ce genre, je n'aime pas trop le shell. Il devient vite limité d'après moi.

Un programme de ce genre je l'aurai fait en C big_smile


Fedora Cambridge i386
Zenwalk 5.2
-------------
Il y a 10 types de personnes : celles qui connaissent le binaire, et celles qui ne le connaissent pas.

Hors ligne