Hello !

question d'optimisation, pour traiter des fichiers, je m'embête sévèrement à pratiquement utiliser un script shell pour chaque manipulation que je fais (ou presque) et donc j'imbrique mes exécutions de script les uns après les autres ce qui n'est pas très propre mais fonctionnel.

ma question est simple, comment je pourrais tout faire tenir en un script avec ce que j'ai fait ? (j'ai tenté, et quand j'ai tenté, le résultat final n'était pas le même, donc je me dis que le fait de mettre toutes mes actions les unes à la suite des autres ça fout le bordel)

merci pour l'aide et ci dessous l'ordre d'imbrication de mes scripts (oui je sais c'est moche) :

- traitement.sh :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
#!/bin/sh
 
dir='/home/switches'
 
exec $dir/test.sh
- test.sh :

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
#!/bin/bash
 
dir='/home/switches/status'
dir2='/home/switches'
list=`ls $dir`
 
for i in $list
 
do
 
sed '1d;2d;3d;4d;5d;6d;7d;8d' $dir/$i > $dir/$i.tmp
cat $dir/$i.tmp > $dir/$i
rm $dir/*.tmp
 
done
 
exec $dir2/test2.sh
- test2.sh :

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
#!/bin/bash
 
dir='/home/switches/description'
dir2='/home/switches'
 
list=`ls $dir`
 
for i in $list
 
do
 
sed '1d;2d;3d;4d;5d;6d;7d;8d;9d;10d' $dir/$i > $dir/$i.tmp
cat $dir/$i.tmp > $dir/$i
rm $dir/*.tmp
 
done 
 
 
exec $dir2/test3.sh
- test3.sh :

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
#!/bin/bash
 
dir='/home/switches/description'
dir2='/home/switches'
list=`ls $dir` 
 
for i in $list
 
do 
 
cat $dir/$i | sed  's/admin down     down/admin down/'  > $dir/$i.tmp 
cat $dir/$i.tmp > $dir/$i
rm $dir/$i.tmp
 
done
 
 
exec $dir2/test4.sh
- test4.sh :
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
 
#!/bin/bash
dir='/home/switches/status'
dir2='/home/switches/description'
dir3='/home/switches/final'
dir4='/home/switches'
 
join -o 2.1,1.3,1.4,2.4 $dir/dccis7-shintstatus $dir2/dccis7-shintdesc > $dir3/DCCIS7
join -o 2.1,1.3,1.4,2.4 $dir/eccis1-shintstatus $dir2/eccis1-shintdesc > $dir3/ECCIS1
join -o 2.1,1.3,1.4,2.4 $dir/occis0-shintstatus $dir2/occis0-shintdesc > $dir3/OCCIS0
join -o 2.1,1.3,1.4,2.4 $dir/occis1-shintstatus $dir2/occis1-shintdesc > $dir3/OCCIS1
join -o 2.1,1.3,1.4,2.4 $dir/occis2-shintstatus $dir2/occis2-shintdesc > $dir3/OCCIS2
join -o 2.1,1.3,1.4,2.4 $dir/occis3-shintstatus $dir2/occis3-shintdesc > $dir3/OCCIS3
join -o 2.1,1.3,1.4,2.4 $dir/occis4-shintstatus $dir2/occis4-shintdesc > $dir3/OCCIS4
join -o 2.1,1.3,1.4,2.4 $dir/occis5-shintstatus $dir2/occis5-shintdesc > $dir3/OCCIS5
join -o 2.1,1.3,1.4,2.4 $dir/occis6-shintstatus $dir2/occis6-shintdesc > $dir3/OCCIS6
 
exec $dir4/import.sh

- import.sh :

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
#!/bin/sh
 
user='switch'
pass='switch'
base='switch'
dir='/home/switches/final'
list=`ls $dir` 
 
for i in $list
 
do
 
mysql --local-infile -u$user -p$pass $base -e"LOAD DATA LOCAL INFILE '$dir/$i'  INTO TABLE $i FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n';"
 
done