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 28/11/2016, à 15:25

NY152

Tester une archive et la déplacer

Bonjour,

Après quelques essais et pêches infructueuses sur le net, je n'arrive pas faire en bash ce que je veux.

J'ai un serveur de fichiers accessible en SSH et j'aimerais faire un script qui teste les archives (zip, 7z, tar, tar.gz, tar.bz2, rar) et déplacer celle-ci dans le bon répertoire.

Pourquoi déplacer les 2 archives ? Parce que le répertoire à tester est un répertoire tampon dont le contenu bouge quasi tout le temps et je veux 2 répertoires (good et bad par exemple)

Quelqu'un pourrait m'aider à l'écriture de ce script ?

D'avance, merci

Hors ligne

#2 Le 28/11/2016, à 16:11

Compte anonymisé

Re : Tester une archive et la déplacer

Bonjour,

je propose ce script qui utilise lsar (sudo apt-get install unar <-- si tu as pas cet utilitaire indispensable)

mkdir good bad
for a in *.{zip,7z,tar,tar.gz,tar.bz2,rar}
do
    lsar -t "$a"&&mv "$a" good/||mv "$a" bad/
done

Dernière modification par Compte anonymisé (Le 28/11/2016, à 16:16)

#3 Le 28/11/2016, à 17:42

NY152

Re : Tester une archive et la déplacer

Le serveur n'est pas basé sur debian/ubuntu et n'a pas ce paquet.

Je continue à chercher ...

Hors ligne

#4 Le 28/11/2016, à 18:00

Compte anonymisé

Re : Tester une archive et la déplacer

bah sinon on peut tester chaque format individuellement

je sais pas quelque chose comme ça

mkdir good bad
for a in *.zip
do
   unzip -t "$a"&&mv "$a" good/||mv "$a" bad/
done
for a in *.7z
do
   7z t "$a"&&mv "$a" good/||mv "$a" bad/
done
...

enfin tu vois le genre, faut que épluches les manuels pour savoir la commande

#5 Le 28/11/2016, à 18:17

NY152

Re : Tester une archive et la déplacer

J'ai du mal à comprendre ta manière de faire.

Comment tu es sur de l'intégrité d'une archive de la sorte ? La sortie des programme n'est pas analysée.

Sous Windows avec Batch j'analyse la sortie de 7z et si "Everything is Ok" s'y trouve c'est que l'archive est correcte. Ici rien de tel pourquoi ?

Hors ligne

#6 Le 28/11/2016, à 19:27

Rufus T. Firefly

Re : Tester une archive et la déplacer

false && echo "good" || echo "bad"
true && echo "good" || echo "bad"

false et true ne font rien, mais renvoient respectivement false et true. Tout comme n'importe quelle commande renvoie true quand tout s'est bien passé et false (en général un numéro d'erreur) quand il y a une erreur.
&& ET
|| OU

Dernière modification par Rufus T. Firefly (Le 28/11/2016, à 19:30)


La provocation est une façon de remettre la réalité sur ses pieds. (Bertolt Brecht)
Il n'y a pas de route royale pour la science et ceux-là seulement ont chance d'arriver à ses sommets lumineux qui ne craignent pas de se fatiguer à gravir ses sentiers escarpés. (Karl Marx)
Il est devenu plus facile de penser la fin du monde que la fin du capitalisme

Hors ligne

#7 Le 28/11/2016, à 19:33

NY152

Re : Tester une archive et la déplacer

Merci pour la précision, j'avais jamais fais ce genre de chose ; Ca reservira

Merci encore ^^

Hors ligne

#8 Le 28/11/2016, à 20:06

Compte anonymisé

Re : Tester une archive et la déplacer

Oui, enfaite j'avais la flemme de mettre en place une boucle if

unzip -t "$a"&&mv "$a" good/||mv "$a" bad/

équivalent à ça (à tester) :

if unzip -t "$a"
    then mv "$a" good/
    else mv "$a" bad/
fi

après on peut faire plus propre avec une fonction qui renvoie le résultat (à toi de voir)

Hors-sujet : ton lien dans ta signature marche pas, mais j'ai trouvé l'idée sympa du coup j'ai fait la même chose smile

Dernière modification par Compte anonymisé (Le 28/11/2016, à 20:07)