Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1267 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  shell executé depuis une page php (vérifier si une clé USB est montée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

shell executé depuis une page php (vérifier si une clé USB est montée

n°1489209
kewan
Posté le 20-01-2024 à 18:37:37  profilanswer
 

:hello: tout le forum,
 
J'ai besoin de votre aide.
 
Je souhaite vérifier si une clé USB est bien montée sur un serveur ubuntu depuis une page php.
 
La clé se monte dans le répertoire /mnt/cle
 

Code :
  1. #!/bin/bash
  2. if [ `grep -c "/mnt/cle" /etc/mtab` -eq 0 ]
  3. then
  4.  echo "La clé n'est pas déjà montée."
  5. else
  6.  echo "La clé est déjà montée."
  7. fi


Le shell fonctionne parfaitement si je le test avec putty. :)  
 
Depuis la page php, j'obtiens toujours "La clé est déjà montée"  :??:  
 
J'ai fais des essais avec exit, je n'ai pas trouvé de solution. :(  
 
Merci pour votre aide.

mood
Publicité
Posté le 20-01-2024 à 18:37:37  profilanswer
 

n°1489211
rat de com​bat
attention rongeur méchant!
Posté le 20-01-2024 à 19:21:20  profilanswer
 

Au pif: Ton serveur php tourne sous un account dédié qui (pour de bonnes raisons!) n'a pas accès à ce fichier spécial?


---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
n°1489212
kewan
Posté le 20-01-2024 à 19:38:45  profilanswer
 

rat de combat a écrit :

Au pif: Ton serveur php tourne sous un account dédié qui (pour de bonnes raisons!) n'a pas accès à ce fichier spécial?


 
Je crois que tu as raison.
 
J'ai essayé ça :
 

Code :
  1. if [ `grep -c "/mnt/cle" /var/www/test.php` -eq 0 ]
  2. then
  3.       echo "La clé n'est pas déjà montée."
  4. else
  5.       echo "La clé est déjà montée."
  6. fi


 
Ça fonctionne bien :
Si je mets /mnt/cle dans le fichier /var/www/test.php => "La clé est déjà montée."
Si je supprime /mnt/cle du fichier /var/www/test.php => "La clé n'est pas déjà montée."


Message édité par kewan le 20-01-2024 à 20:08:48
n°1489213
rat de com​bat
attention rongeur méchant!
Posté le 20-01-2024 à 21:22:36  profilanswer
 

Si et seulement si c'est pour un usage perso et intranet tu peux éventuellement tenter d'exécuter `mount` sans arguments, ça devrait retourner la même liste et cette commande (sans arguments) peut être exécutée par tout le monde je crois.


---------------
Si vous ouvrez un sujet merci de ne pas le "laisser mourir" subitement et de le marquer comme "résolu" le cas échéant!
n°1489216
kewan
Posté le 21-01-2024 à 10:47:01  profilanswer
 

J'ai trouvé comment vérifier si ma clé est montée, mais je n'arrive pas à la monter.
 
/var/www/admin/test.php

Code :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.  <meta charset="utf-8"/>
  5.  <title>test</title>
  6. </head>
  7. <body>
  8.  <?php
  9.   $monterCle = exec('sudo /root/bash/monterCle.sh start');
  10.   echo $monterCle;
  11.  ?>
  12. </body>
  13. </html>


 
/root/bash/monterCle.sh chmod 777

Code :
  1. #!/bin/bash
  2. mount /dev/sdb1 /mnt/cle
  3. echo "Clé montée"


 
/etc/sudoers

Code :
  1. root ALL=(ALL:ALL) ALL
  2. www-data ALL=NOPASSWD: /root/bash/monterCle.sh start


 
Résultat :
 
Le texte "Clé monté" s'affiche, mais la clé n'est pas montée
 
Info :
 
Le fichier /root/bash/monterCle.sh s'execute bien si je le test avec putty


Message édité par kewan le 21-01-2024 à 10:50:00
n°1489219
kewan
Posté le 21-01-2024 à 11:18:33  profilanswer
 

Bonjour,
 
J'ai fait de nouveaux essais.
 
/var/www/admin/test.php

Code :
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.  <meta charset="utf-8"/>
  5.  <title>test</title>
  6. </head>
  7. <body>
  8.  <?php
  9.   // Chemin du point de montage
  10.   $mountPoint = "/mnt/cle";
  11.   // Chemin du périphérique USB
  12.   $usbDevice = "/dev/sdb1";
  13.   // Commande pour monter la clé USB
  14.   $command = "sudo mount $usbDevice $mountPoint 2>&1";
  15.   // Exécution de la commande et capture de la sortie
  16.   $output = [];
  17.   $exitCode = 0;
  18.   exec($command, $output, $exitCode);
  19.   // Vérification du code de sortie de la commande
  20.   if ($exitCode === 0) {
  21.    echo "La clé USB a été montée avec succès.";
  22.   } else {
  23.    echo "Erreur lors du montage de la clé USB:";
  24.    foreach ($output as $line) {
  25.     echo "<br>$line";
  26.    }
  27.   }
  28.  ?>
  29. </body>
  30. </html>


 
Résultat :
 
Erreur lors du montage de la clé USB:
mount: /mnt/cle: /dev/sdb1 already mounted on /mnt/cle
 
Le répertoire /mnt/cle est vide.
Le fichier /etc/mtab ne mentionne pas /dev/sdb1
 
Si je lance :

Code :
  1. if [[ $(findmnt /mnt/cle) ]]; then
  2.     echo "La clé est montée"
  3. else
  4.     echo "La clé n'est pas montée"
  5. fi


 
Résultat :
 
La clé n'est pas montée.
 
 
Edit :
j'ai modifié /etc/sudoers

Code :
  1. root ALL=(ALL:ALL) ALL
  2. www-data ALL=NOPASSWD: /root/bash/monterCle.sh start
  3. www-data ALL=(ALL) NOPASSWD: /bin/mount
  4. www-data ALL=(ALL) NOPASSWD: /bin/umount


 
Aucun changement
 
 
 
Edit :
 
avec putty
 
www-data@serveuratelier:~$ sudo mount /dev/sdb1 /mnt/cle
 
ça fonctionne, la clé est montée.
 
Avec ma page php, que la clé soit déjà monté ou pas, j'obtiens toujours :
 
Erreur lors du montage de la clé USB:
mount: /mnt/cle: /dev/sdb1 already mounted on /mnt/cle.
 
 
J'ai modifié /etc/sudoers

Code :
  1. root ALL=(ALL:ALL) ALL
  2. www-data ALL=NOPASSWD: /usr/bin/mount
  3. www-data ALL=NOPASSWD: /usr/bin/umount


Message édité par kewan le 21-01-2024 à 13:20:41

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  shell executé depuis une page php (vérifier si une clé USB est montée

 

Sujets relatifs
quel live USB ou CD détecte les carte wifi standard ?RÉSOLU - Booter sur clé USB après install Ubuntu 23.04 Cinnamon
Usb sous LINUXComment vérifier les certificats que j'ai créer de ma PKI ?
[UBUNTU] Lancer Ubuntu au démarrage depuis un HDD externe USB? comment faire pour afficher page identifiants Teamvieweroiou
Substitution de variable lors d'exécution de script shell à distance[RÉSOLU] Créer une clé USB bootable Windows 10 sur un PC en ubuntu
CURL ok exécuté manuellement mais pas ok en script ?Problème d'actualisation de page après une erreur de codage
Plus de sujets relatifs à : shell executé depuis une page php (vérifier si une clé USB est montée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR