|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Bonjour,
Je dois réaliser un petit (?) bash à priori simple, mais, comme je ne maîtrise pas le shell linux suffisamment, ça devient une galère sans nom ! ![]() Je vous explique mon problème. J'ai un fichier texte contenant une liste de dossier. J'aimerais effectué, pour chaque dossier, une commande particulière. Bon, je pourrais, à la rigueur créer un batch à partir ce de fichier, et ajouter la commande à réaliser devant chaque ligne. Seulement, voilà. Cette liste est susceptible de changer régulièrement, et même sans doute, très régulièrement ! S'il faut que je refasse le fichier à chaque fois, je risque d'y passer une bonne partie de mon temps, et, outre le coté rébarbatif de la chose, je n'ai pas le temps de m'amuser à ça, sans parler des erreurs possible ! Bref, je voudrais automatiser le truc. Un programme génère le fichier texte contenant la liste des dossiers, et le crontab execute le bash qui boucle sur chacun des dossiers du fichier en question. Quelqu'un sait-il comment faire ? Merci d'avance JS |
|
|
01
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
|
|
|
20
|
|
|
#3 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Bonjour
Et merci, je teste et je reviens vous dire ce que ça donne, car je ne suis pas sûr de tout comprendre... Donc, même si ça marche, j'aurais des questions ! ![]() JS |
|
|
10
|
|
|
#4 |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 989 ![]() |
Bonjour.
Ici, tu trouvera aussi une liste d'exercices corrigés qui pourront te servir (parsage de fichiers, etc). Cordialement, Idriss |
|
20
|
|
|
#5 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Merci pour ce lien, fort intéressant et très instructif.
Et merci d'avoir remis ce thread à sa place. ![]() Hélas, j'ai quand même l'impression que ce que je veux faire ne sera pas possible avec un bash ! ![]() Mais merci quand même à vous 2 JS |
|
|
01
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Citation:
en gros : Code pseudo-code :
|
|||
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Citation:
Le problème c'est que je veux faire un rsync de chacun de ces dossiers dans un autre, et là, ça ne marche pas, à cause des noms de dossier avec espace et pire, avec accent ! Comme les dossiers d'origine sont sur un Windows serveur, ça gafouille grave !
|
|||
|
|
01
|
|
|
#8 |
|
Membre chevronné
![]() K-Z. F.Ingénieur sécurité Inscription : juin 2006 Messages : 393 ![]() |
Yopyop,
Pouvons nous voir un fichier d'exemple ? ainsi que ton script car là j'ai un peu de mal à visualiser le soucis et la situation :/ ++
__________________
GNU/Linux c'est une question de VI ou de MORE. http://www.goodbye-microsoft.com "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p ) Le tag et la ne sont pas fait que pour le décor, pensez-y !R.I.P. F-k-z 13/06/2006 - 12/10/2011 *Linux est convivial, il est juste très sélectifs pour ses amis. |
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
les accents ne devraient pas poser de problèmes.
pour les espaces, utilise des guillemets autour des variables ("$nomVariable") toujours. |
|
|
30
|
|
|
#10 | |||
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Pas de problème
Code :
/mnt/Apps pointe sur un dossier d'un serveur Windows 2008 distant par lequel on accède via un tunnel VPN sécurisé en SDSL. Et une partie du fichier contenant les dossiers Citation:
), et les temps sont très longs. D’où l'idée de scinder en plusieurs parties et effectuer les synchronisations sur plusieurs nuits.Voilà. |
|||
|
|
10
|
|
|
#11 | ||
|
Membre chevronné
![]() K-Z. F.Ingénieur sécurité Inscription : juin 2006 Messages : 393 ![]() |
je ferais bien 2-3 changements:
Code :
Désolé pas de tux sous la main
__________________
GNU/Linux c'est une question de VI ou de MORE. http://www.goodbye-microsoft.com "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p ) Le tag et la ne sont pas fait que pour le décor, pensez-y !R.I.P. F-k-z 13/06/2006 - 12/10/2011 *Linux est convivial, il est juste très sélectifs pour ses amis. |
||
|
21
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
pour ma part, je ne construirais pas une commande dans une variable, mais utiliserais une fonction :
Code :
|
||
|
|
40
|
|
|
#13 |
|
Membre chevronné
![]() K-Z. F.Ingénieur sécurité Inscription : juin 2006 Messages : 393 ![]() |
@N_BaH Je ne peux que plussoyer ton code
__________________
GNU/Linux c'est une question de VI ou de MORE. http://www.goodbye-microsoft.com "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p ) Le tag et la ne sont pas fait que pour le décor, pensez-y !R.I.P. F-k-z 13/06/2006 - 12/10/2011 *Linux est convivial, il est juste très sélectifs pour ses amis. |
|
10
|
|
|
#14 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Je vois bien que j'ai affaire à des spécialistes. Mais, je suis quelqu'un qui aime comprendre, plutôt que d'appliquer bêtement des solutions gentiment données.
Autant je comprend la version de KevinouLoliLol, autant celle de N_BaH est beaucoup plus floue pour moi. En particulier la ligne de la fonction... Code :
rsync -lptgoDizd --delete /{mnt,echange}/Apps/"$1" est plus qu'obscur pour moi ! ![]() Pourriez-vous éclairer ma lanterne, s'il vous plait ? |
|
|
10
|
|
|
#15 | |
|
Membre chevronné
![]() K-Z. F.Ingénieur sécurité Inscription : juin 2006 Messages : 393 ![]() |
ça va correspondre à tes répertoires. tu as:
Citation:
La seule différence est mnt / echange . cela est un ""raccourci"" pour dire tu prends en premier parametre /mnt/Apps/"$1" et en second parametre /echange/Apps/"$1" Je suis pas sur d'être très clair en fait :/ voila des exemples avec détails
__________________
GNU/Linux c'est une question de VI ou de MORE. http://www.goodbye-microsoft.com "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p ) Le tag et la ne sont pas fait que pour le décor, pensez-y !R.I.P. F-k-z 13/06/2006 - 12/10/2011 *Linux est convivial, il est juste très sélectifs pour ses amis. |
|
|
20
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
il s'agit du Développement des accolades :
|
|
|
20
|
|
|
#17 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Merci pour vos éclaircissements.
Je comprend le principe, en voit l'intérêt, et me rend compte que ça ne rend pas la lecture facile des scripts ! ![]() En tout cas, je vais essayer le batch et vous tiens au courant ! |
|
|
10
|
|
|
#18 |
|
Membre chevronné
![]() K-Z. F.Ingénieur sécurité Inscription : juin 2006 Messages : 393 ![]() |
Pour être honnête, je trouve que cela la simplifie à partir du moment où l'on connait ce type de commande/raccourci.
On voit directement ce que l'on cherche à faire sur une seule ligne. il faut juste savoir la valeur de la variable $1 Dans le cas de ton script cela me rajoute 2 variables: Code :
CL_RSYNC=${CL_DEBUT}${CL_LIGNE}${CL_SUITE}${CL_LIGNE} ++
__________________
GNU/Linux c'est une question de VI ou de MORE. http://www.goodbye-microsoft.com "Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p ) Le tag et la ne sont pas fait que pour le décor, pensez-y !R.I.P. F-k-z 13/06/2006 - 12/10/2011 *Linux est convivial, il est juste très sélectifs pour ses amis. |
|
20
|
|
|
#19 |
|
Membre Expert
![]() Responsable de service informatique Inscription : avril 2011 Messages : 786 ![]() |
Bon, alors les résultats sont bons pour ce qui est de la boucle, mais hélas, ça ne fonctionne pas !
1) Je ne peux pas utiliser la syntaxe {mnt, echange} car il faut que j'ajoute /* à la fin du premier paramètre ! Mais, ça c'est pas grave, je peux revenir à la solution des variables. 2) Gros souçis avec les accents. J'ai ajouté un echo du $1 avant le rsync et j'ai comme résultat l'image en pièce jointe. Bref, les accents sont interprétés bizarrement. Dans, le fichier texte des dossiers, j'ai changé pour mettre un "\" devant l'accent, ce qui explique le d\#351p, mais sans le "\" j'ai la même erreur sans le "\" dans le texte ! Pourtant le echo affiche bien la ligne avec l'accent et sans le "\". Cela vient du rsync, mais je n'ai pas trouvé de moyen pour lui faire avaler les accents ! @*$%@ d'utilisateur qui mettent des accents dans les noms de fichiers et de dossiers ! |
|
|
10
|
|
|
#20 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
2/j'ai "googlé", et il semblerait qu'il faille utiliser l'option --iconv
... ? |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com