Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 15h01   #1
Membre habitué
 
Expert Support Applicatif
Inscription : mars 2007
Messages : 158
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Expert Support Applicatif
Secteur : Distribution

Informations forums :
Inscription : mars 2007
Messages : 158
Points : 140
Points : 140
Par défaut Gestion des erreurs

Bonjour à tous,

J'ai cherché et parcouru le forum et la FAQ mais je suis peut être passé à coté du tuto qui me faut ^^

Pour faire simple je possède 1 serveur (Windows) et sur ce serveur 10 PC sous du Centos.

Mon problème ce situe sur un script que je souhaite faire.
1) il doit se connecter au ftp
2) télécharger plusieurs fichiers
3) extraire ces fichiers

Pour tout ça 0 souci tout fonctionne mais j'aimerais y ajouter la gestion d'erreur et là... c'est le drame je ne m'y connais absolument pas assez...

Si quelqu'un peut m'aider sur des tutoriels ou des cours que j'apprenne un peu ça j'en serais ravi ^^

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
#!/bin/sh
#Modification du fichier Config si present en Config.bck
mv Config Config.bck 
 
echo "Connexion au FTP pour dl les fichiers"
#Debut de connexion
ftp <<**
open X.X.X.X
anonymous
 
(ici je devrais faire ENTREE mais je serais devant Putty donc pas de souci là dessus)
 
cd MISEAJOUR
bin
get MAJ.bz2
bye
**
#Fin de connexion
echo "Fin de connexion"
 
echo "Decompression de l'archive... merci de patienter"
tar -xf MAJ.bz2
 
echo "C'est fini !!!"
Donc ce que je cherche à faire :
- Mettre en place un message d'erreur non bloquant si le dossier Config n'existe pas
- Mettre en place un message d'erreur qui me sort du programme si la connexion au FTP n'est pas possible
- Mettre en place une barre de progression pour le dézippage de l'archive (j'en demande peut être beaucoup et j'ai pas cherché ça encore)

Je cherche pas la solution clef en main mais si quelqu'un peut me donner un coup de main pour m'expliquer tout ça j'en serais ravi ^^
Alex70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 15h33   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

1/ help test.
2/
Code :
1
2
if true; then echo ok; else echo ko; fi
if false; then echo ok; else echo ko; fi
en gros :
Code :
1
2
3
4
if commande
then
else
fi
ton problème ce sera de caler le here-doc
Tu peux facilement à la place utiliser echo (les commandes ftp ayant été placées dans une variable).
Ou alors, utiliser un .netrc et une macro
...
?
3/ aucune idée.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/10/2011, 16h33   #3
Membre habitué
 
Expert Support Applicatif
Inscription : mars 2007
Messages : 158
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Expert Support Applicatif
Secteur : Distribution

Informations forums :
Inscription : mars 2007
Messages : 158
Points : 140
Points : 140
Merci à toi, après quelque test pas vraiment réussi ça fonctionne ^^

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
#Modification du fichier Config si present en Config.bck
if [ -d Config ]; then
        {
                echo "Dossier Config en archive"
                mv Config Config.bck
        }
else
        {
                echo "Le dossier Config n'existe pas"
        }
fi
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
echo "Connexion au serveur terminee"
#Verification de la presence de l'archive
if [ -e Config.bz2 ]; then
        {
                echo "##############################"
                echo "##############################"
                echo "Decompression de l'archive... merci de patienter..."
                tar -xf Config.bz2
        }
else
        {
                echo "Le fichier n'est pas present sur le disque, merci de voir la connexion FTP"
                exit
        }
fi
echo "C'est fini !!!"
bref j'ai pas vraiment compris pour la connexion au FTP comment cela fonctionne mais au moins mon script sera un peu plus parlant ^^

Merci en tout cas je vais continuer de chercher pour voir ce qui est possible de faire ^^
Alex70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 16h51   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
je voyais quelque chose comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ftpCmd="open X.X.X.X
anonymous
 
(ici je devrais faire ENTREE mais je serais devant Putty donc pas de souci là dessus)
 
cd MISEAJOUR
bin
get MAJ.bz2
bye"
 
if echo "$ftpCmd" | ftp 
then echo "connexion réussie"
     # tester l'existence du fichier ?
else echo "la connexion a échoué"
fi
...
?

ou alors, après la connexion ftp tu testes $?
Code pseudo-code :
1
2
3
4
si $? vaut 0
alors connexion ftp ok
autrement connexion ftp KO
finsi
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/10/2011, 17h32   #5
Membre habitué
 
Expert Support Applicatif
Inscription : mars 2007
Messages : 158
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Expert Support Applicatif
Secteur : Distribution

Informations forums :
Inscription : mars 2007
Messages : 158
Points : 140
Points : 140
très bonne solution merci !! je viens de tester :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
ftpCmd="open X.X.X.X
anonymous
....
"
 
if echo "$ftpCmd" | ftp 
then echo "connexion réussie"
     # tester l'existence du fichier ?
else echo "la connexion a échoué"
fi
Ca fonctionne, mais si je colle ça, je vois pas comment reprendre le FTP...

Je viens de tester :
Code :
1
2
3
4
5
6
7
8
9
10
 
 
then
echo "connexion ok"
ftpDL="open 1.1.1.1
anonymous
cd maj
bin
get MAJ...
bye"
ça me retourne le connexion ok mais il prend pas le fichier... une idée ?


--------------------
Le top serait :
Connexion => affiche le connexion OK => effectue le DL

Mais avec ta solution il se co, dl et effectue le test après ce qui est déjà pas mal pour moi. Merci de ton aide.
Alex70 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h11.


 
 
 
 
Partenaires

Hébergement Web