#1 Le 30/12/2009, à 17:48
- KubunTof
[Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Bonjour,
Je cherche à récupérer le résultat de la commande blkid pour lancer un script php de mon site.
Dans un terminal je tape :
firefox http://www.rodascope.com/xmlClients.php?Action=ListeBoutiques&Page=`blkid /dev/sdc1`
mais mon script php ne recoit pas le résultat de la commande blkid.
En fait je cherche à récupérer UUID d'une clé USB pour l'envoyer à mon site. Le but est de gérer le login de mes clients grâce à une clé USB, au delà du problème de syntaxe de ma commande, vos idées et suggestions sont les bienvenues...
Merci pour votre aide.
Dernière modification par KubunTof (Le 17/11/2010, à 09:38)
Hors ligne
#2 Le 30/12/2009, à 18:09
- nesthib
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
il faut être root pour que la commande blkid fonctionne (il y a vol_id aussi)
sudo blkid -s UUID -o value /dev/sdaX
question : quel shell utilises-tu (echo $SHELL) ?
remarque1 : la notation $(…) est à préférer à `…`
remarque2 : ce type d'authentification ne me semble pas terrible niveau sécurité (facilement falsifiable aussi bien côté client (faux uuid) que pour un attaquant car http non sécurisé). À mon avis tu dois pouvoir trouver de bien meilleure méthodes (clé publique/privée par ex.)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 30/12/2009, à 18:20
- sputnick
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Tu peux pas mettre de backticks dans ton URL.
Tu doit parser et traiter la variable php $_SERVER['QUERY_STRING'] et recuperer la partition à traiter que tu place dans une variable $foo par exemple. Elle est automatiquement remplie avec ce qu'il y a apres le ?
Par exemple, tu peux faire une URL du type :
http://www.rodascope.com/xmlClients.php? … age=sdc1
puis c'est php qui recupere la valeure de age et cree la variable $foo et lance qq chose du style :
system("blkid /dev/$foo");
qui te retournera la valeure attendue.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 30/12/2009, à 18:22
- sputnick
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
@nesthib: Sous archlinux, aucun souci pour lancer blkid /dev/sda1 en user normal. Je sais pas pour ubuntu...
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 30/12/2009, à 18:38
- nesthib
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
j'ai pas suivi… on parle de php ou de bash là ?
@sputnick : décidément on se croise aujourd'hui pour ubuntu il faut bien être root (que te donne : "ls -l /sbin/blkid" ?)
sinon rien à voir : comment as-tu fait pour ta signature random? manuel? un script?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#6 Le 30/12/2009, à 18:43
- sputnick
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
j'ai pas suivi… on parle de php ou de bash là ?
@sputnick : décidément on se croise aujourd'hui pour ubuntu il faut bien être root (que te donne : "ls -l /sbin/blkid" ?)
sinon rien à voir : comment as-tu fait pour ta signature random? manuel? un script?
Il lance un script php dans son navigateur pour afficher le resultat de blkid <argument>
On peux configurer sudo pour outrepasser les droits. Les risques sur une commande comme ca sont AMHA limités.
Pour les bashfr randoms, je me suis fais un bot en perl
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#7 Le 30/12/2009, à 18:46
- nesthib
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Pour les bashfr randoms, je me suis fais un bot en perl
cool! un post! un post! (enfin si tu veux bien)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 30/12/2009, à 19:18
- sputnick
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Uniquement en PV
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#9 Le 31/12/2009, à 12:40
- nesthib
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Uniquement en PV
ce serait avec plaisir ! après je ne connais pas trop le perl, c'est plus pour me cultiver. J'en ai profité pour jeter un œil aux scripts de ton site et j'ai trouvé ton code bash bien chouette, j'ai appris quelques trucs sympas !
merci.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#10 Le 31/12/2009, à 13:12
- KubunTof
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
Bonjour et Merci pour vos premiers éléments de réponse, la ligne de commande suivante :
firefox http://www.rodascope.com/xmlClients.php?Action=ListeBoutiques\&Page=$(blkid -s UUID -o value /dev/sdc1)
fonctionne maintenant, les soucis venaient de :
- "\" qui manquait avant "&Page",
- et des " que donnait le résultat de blkid (merci nesthib).
Mon shell est : /bin/bash et je suis sous Ubuntu 9.10 64 bits.
Les problèmes qui me restent à résoudre sont :
1) vol_id semble ne pas être là, la commande
man vol_id
me renvoie :
No manual entry for vol_id
Je la préférerais pourtant à blkid pour éviter le sudo et mot de passe.
Mais si il existait un ID matériel unique de clé USB (genre adresse MAC de carte réseau) ça serait beaucoup mieux, même s'il faut acheter des clés un peu spéciales. Enfin surtout si on arrive à le lire facilement, et à le (re)écrire moins facilement ?
2) la clé USB chez l'utilisateur ne sera pas dans /dev/sdc1, comment la retrouver, avec son LABEL ? que je peux modifier avant de livrer mes clés aux clients ?
3) j'aurais bien aimé que cette commande se lance à l'insertion de la clé, autorun ?
4) je vais bien sur envoyer à mon script php un ensemble de données sur la clé (UUID, LABEL,....) de façon crypté (md5 ?), ensuite dans php je me débrouillerais.
5) enfin le dernier point : faire en sorte que ma clé fonctionne sous linux, win, et voir même mac ?
Merci encore pour votre aide, je pense que vous avez compris ou je souhaite en arriver : identification des utilisateurs sur mon site sans saisie de login et pwd, on a la clé ou on ne l'a pas. Je suis bien conscient qu'ensuite le problème consistera à éviter qu'une clé se copie trop "facilement", mais si on la copie ca veut dire que 2 utilisateurs identiques viendront sur le site avec des IPs différentes et là un autre mécanisme interviendra... mais c'est une autre histoire
Hors ligne
#11 Le 31/12/2009, à 13:40
- nesthib
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
très honnêtement je ne crois pas trop à cette solution…
1- l'UUID dépend de la partition, pas de la clé
OPTIONS
[…]
-U UUID
Set the universally unique identifier (UUID) of the filesystem to UUID.
2- tu peux configurer sudo comme te l'as dit sputnick ou fixer le bit suid : problème tu n'as sûrement pas accès à la machine de tous tes clients + apporte potentiellement une faille de sécurité
3- à ma connaissance ça n'existe pas en standard sous linux (bonjour les problèmes de sécurité sinon…)
5- laisse tomber avec bash alors…
À mon avis plutôt que de te lancer à créer un truc à partir de rien, tu devrais faire des recherches sur les méthodes d'authentification qui existent déjà et qui sont testées et éprouvées (un principe de base en sécurité).
Tiens nous au courant.
Bon courage!
Dernière modification par nesthib (Le 31/12/2009, à 13:41)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#12 Le 31/12/2009, à 16:35
- KubunTof
Re : [Résolu]Récupérer le résultat d'une commande pour le passer à une autr
C'est vrai, et j'avance un peu au fil de mes recherches...L'idée se résume maintenant à créer un lanceur du genre :
firefox http://www.rodascope.com/xmlog.php?X=1aze12z1e3z1a321dsq5
avec un X unique pour chaque client, le mettre sur une clé USB sur une partition lisible par les deux systèmes (donc FAT32 à priori), et si possible "lancer le lanceur" depuis un autorun.sh/inf.
J'aurais comme ça une clé compatible pour les deux systèmes qui lancera le navigateur sur la bonne page, identifiera le client et lui demandera son mot de passe. Je ne prétends surtout pas inventer le truc le plus sécurisé de la planète, j'espère juste que le "gadget" permettant au client d'être sur sa page, et loggé, juste en insérant SA clé USB, ne sera pas moins "sécurisé" que le classique login/password ? Si je trouve des clés USB avec des IDentifiant matériel unique ca remplacera mon X, mais en attendant ça me permet de reprendre le développement du site.
En tout cas merci pour vos contributions elle m'ont permis d'avancer. Si vous avez d'autres idées ou commentaires je suis preneur, notamment pour lancer le lanceur depuis un ou 2 autorun qui marcherait sous linux et sous wintruc. En attendant je test de mon côté...
Hors ligne