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 26/11/2014, à 17:56

WizardPC

Problème de variable API VirusTotal

Hello !

Je travaille sur un petit script en shell qui fait de l'analyse de fichiers en utilisant l'API VirusTotal disponible ici : API

Mais j'ai un problème...
Je veux uploader un fichier pour analyse, donc je tape :

vt.py -f /media/disk/fichier.pdf

ça me donne en résultat

Looking for:
	media/disk/fichier.pdf

Scanned on : 
	2014-11-26 10:45:30

Detections:
	 0/56 Positives/Total

	Results for MD5    : 01ff7b9...
	Results for SHA1   : 7c5760...
	Results for SHA256 : f9b1cc1...

	Permanent Link : https://www.virustotal.com/file/f9b1cc1...

Bon vu que j'ai plusieurs fichiers je peux faire ça :

vt.py -f /media/disk/fichier.pdf /media/disk/image.png

Et ça me donnera deux rapports comme précédemment...
Pour automatiser la tache, les chemins des fichiers se retrouvent dans une variable

upload="/media/disk/fichier.pdf /media/disk/image.png"
vt.py -f $upload

Maintenant je veux gérer le cas ou il y a un espace dans un nom de fichier !

vt.py -f "/media/disk/fichier.pdf" "/media/disk/musique n18.mp3"

ça fonctionne toujours roll

Et voila ou je suis bloqué...

upload="\"/media/disk/fichier.pdf\" \"/media/disk/musique n3.mp3\""
echo "$upload"
"/media/disk/fichier.pdf" "/media/disk/musique n3.mp3"
vt.py -f $upload

NE FONCTIONNE PAS ! Le script de l'API me renvois les lignes ou il y a des erreurs mais en dehors de ça, je ne comprend pas pourquoi quand j'écris à la main un chemin de fichier contenant un espace, ça fonctionne ! Et quand je passe ce même chemin, dans la même syntaxe, mais par une variable ça ne fonctionne plus !

Merci de m'éclairer wink

Dernière modification par WizardPC (Le 26/11/2014, à 17:57)

Hors ligne

#2 Le 26/11/2014, à 18:14

pingouinux

Re : Problème de variable API VirusTotal

Bonjour,
Essaye ceci

upload=("/media/disk/fichier.pdf" "/media/disk/musique n3.mp3")
vt.py -f "${upload[@]}"

Hors ligne

#3 Le 27/11/2014, à 10:27

WizardPC

Re : Problème de variable API VirusTotal

ça fonctionne !! lol

Tu peux m’expliquer la syntaxe ? ça fonctionne peut importe le nombre de fichier ?

edit : ça à l'air de fonctionner, j'ai modifier les " par des ' si jamais il y a des noms de répertoire bizarre roll

upload=('/media/disk/1.png' '/media/disk/report v1.pdf' '/media/disk/$32/a b c.txt')

Dernière modification par WizardPC (Le 27/11/2014, à 10:47)

Hors ligne

#4 Le 27/11/2014, à 11:03

pingouinux

Re : Problème de variable API VirusTotal

WizardPC a écrit :

Tu peux m’expliquer la syntaxe ? ça fonctionne peut importe le nombre de fichier ?

Tu peux regarder la documentation sur les tableaux en bash : man bash, rubrique Arrays (en version anglaise)
Tu peux mettre plus de 2 fichiers, comme par exemple :

upload=(/media/disk/*.{pdf,mp3})

Hors ligne

#5 Le 27/11/2014, à 11:27

WizardPC

Re : Problème de variable API VirusTotal

Ok merci wink

Par contre j'ai encore un autre problème, j'aurais peut être du le dire dès le début vu que ça à l'air d'être le même genre de soucis..
J'ai un fichier "upload.txt" qui contient les chemins de fichiers à mettre en ligne :

cat upload.txt
'/media/disk/1.png' '/media/disk/report v1.pdf' '/media/disk/$32/a b c.txt'

Du coup je voulais passer ça dans la variable "upload" et faire comme tu m'as montré mais ça pas l'air de fonctionner...
J'ai essayé :

upload=(cat upload.txt)
upload=($(cat upload.txt))

Mais une fois que je lance la commande

vt.py -f "${upload[@]}"

ça ne fonctionne pas.. Du coup je pense que j'arrive pas à bien "créer" la variable upload à partir du fichier texte. Une idée ?

Merci neutral

Hors ligne

#6 Le 27/11/2014, à 11:56

pingouinux

Re : Problème de variable API VirusTotal

Dans ce cas, ne mets qu'un seul fichier par ligne dans upload.txt.

upload=();n=0;while read fic;do upload[$((n++))]=$fic;done <upload.txt

Hors ligne

#7 Le 27/11/2014, à 12:19

WizardPC

Re : Problème de variable API VirusTotal

Bon je récapitule avec le cas d'un fichier sans espace dans un répertoire classique hmm C'est censé être le cas le plus simple !

/home/test/Documents/bin/vt.py -f '/media/test/EB14-F3E9/1.png'

FONCTIONNE

upload=('/media/test/EB14-F3E9/1.png')
/home/test/Documents/bin/vt.py -f "${upload[@]}"

FONCTIONNE

tmp=$(mktemp)
echo "'/media/test/EB14-F3E9/1.png'" > $tmp

cat $tmp
'/media/test/EB14-F3E9/1.png'

upload=();n=0;while read fic;do upload[$((n++))]=$fic;done <$tmp
echo "${upload[@]}"
'/media/test/EB14-F3E9/1.png'

/home/test/Documents/bin/vt.py -f "${upload[@]}"

NE FONCTIONNE PAS

ça me désespère sad

Dernière modification par WizardPC (Le 27/11/2014, à 12:19)

Hors ligne

#8 Le 27/11/2014, à 12:23

pingouinux

Re : Problème de variable API VirusTotal

Essaye comme ceci

echo "/media/test/EB14-F3E9/1.png" > $tmp

ou

echo '/media/test/EB14-F3E9/1.png' > $tmp

Hors ligne

#9 Le 27/11/2014, à 12:29

WizardPC

Re : Problème de variable API VirusTotal

Alors ça avance big_smile

cat $tmp
/media/test/EB14-F3E9/report v1.pdf
/media/test/EB14-F3E9/1.png
/media/test/EB14-F3E9/$32/a b c.txt

upload=();n=0;while read fic;do upload[$((n++))]=$fic;done <$tmp
echo "${upload[@]}"
/media/test/EB14-F3E9/report v1.pdf /media/test/EB14-F3E9/1.png /media/test/EB14-F3E9/$32/a b c.txt

/home/test/Documents/bin/vt.py -f "${upload[@]}"

Miracle ça fonctionne !!! Il me reste plus qu'à adapter cette façon de faire à mon script wink

Dernière modification par WizardPC (Le 27/11/2014, à 12:29)

Hors ligne

#10 Le 27/11/2014, à 12:41

pingouinux

Re : Problème de variable API VirusTotal

Pour voir le contenu du tableau, il vaut mieux faire ceci :

for i in "${upload[@]}";do echo "$i";done

Hors ligne

#11 Le 27/11/2014, à 14:52

WizardPC

Re : Problème de variable API VirusTotal

D'accord.

Merci @pingouinux pour ton aide, maintenant ça fonctionne comme il le faut smile

Hors ligne