monter automatiquement une clé usb ?? [résolu]

monter automatiquement une clé usb ?? [résolu] - Installation - Linux et OS Alternatifs

Marsh Posté le 27-02-2003 à 09:08:40    

salut tout le monde!!
je viens de recevoir ma clé usb et j'aimerais bien qu'elle se monte automatiquement lorsque je la branche!
auriez vous une idée, une piste??
 
chuis sous RH8 avec un kernel 2.4.xx et je sais bien sûr comment faire pour monter ma clé à la mano, mais le faire toujours en tant que root et à la main, c lourd!
 
 
merci!!
 
--edit--
 
c bourrin mais ça marche!! je donne le code demain (qd j'aurais mon pc koi!!)  [:spikler]


Message édité par arghbis le 27-02-2003 à 21:15:24
Reply

Marsh Posté le 27-02-2003 à 09:08:40   

Reply

Marsh Posté le 27-02-2003 à 09:16:01    

tu crées un script avec le sticky bit pour le faire...


---------------
DivX is GooD :)
Reply

Marsh Posté le 27-02-2003 à 09:56:23    

sticky bit???

Reply

Marsh Posté le 27-02-2003 à 11:36:33    

tu peux essayer de regarder du cote de hotplug http://linux-hotplug.sourceforge.net.
Si t'y arrives, j'aimerais bien des explications parce que perso j'ai pas reussi...
 
Sinon y'a auto.fs qui peut peut etre fonctionner...

Reply

Marsh Posté le 27-02-2003 à 11:39:55    

Ah oui moi aussi ça m'intéresse !

Reply

Marsh Posté le 27-02-2003 à 13:54:49    

bon alors j'ai rien compris du tout à hot plug (pas compris ce qu'il fallait modifier pour que ça marche).
cependant, je me pose une question : pour faire ce que je veux, il y une méthode bourrin :
- créer un script bash qui test si le periph sda1 (chez moi) est présent :  
       => si oui, tester s'il est monter, et s'il ne l'est pas, le monter
       => si non, on fait rien
 
-on met ça dans la crontab toutes les secondes et pis rulez!!
 
une méilleure idée?? untruc plus fin??

Reply

Marsh Posté le 27-02-2003 à 14:26:38    

Code :
  1. #!/usr/bin/perl -w
  2. open (R, "/var/log/messages" );
  3. while (<R> )
  4. {
  5.     push (@lignes, $_);
  6. }
  7. $i=$#lignes;
  8. while ($i)
  9. {
  10.     if ($lignes[$i] =~ /kernel: hub\.c: USB new device connect/)
  11.     {
  12. open (R2, "/etc/mtab" );
  13. while (<R2> )
  14. {
  15.     if ($_ =~ /^\/dev\/sda1/)
  16.     {
  17.  $mount='ok';
  18.     }
  19. }
  20. close (R2);
  21. if (!$mount)
  22. {
  23.     `mount -t vfat /dev/sda1 /home/machin/usb`;
  24.     exit;
  25. }
  26. exit;
  27.     }
  28.     elsif ($lignes[$i] =~ /kernel: usb\.c: USB disconnect/)
  29.     {
  30. open (R2, "/etc/mtab" );
  31. while (<R2> )
  32. {
  33.     if ($_ =~ /^\/dev\/sda1/)
  34.     {
  35.  $mount='ok';
  36.     }
  37. }
  38. close (R2);
  39. if ($mount)
  40. {
  41.     `umount /home/machin/usb`;
  42.     exit;
  43. }
  44. exit;
  45.     }
  46.    
  47.     $i--;
  48. }
  49. close (R);


 
bon voilà, j'ai fais ça en perl (paske le perl c bon, mangez-en !!!  [:fuel] )! en manuel ça fait ce que je veux, alors je vais le mettre dans ma crontab!!
 
des remarques???
 
bon je sais, c bourrin, mais bon c simple et ça marche!! alors si jamais un gourou passe par là et a une méilleure idée, je prends!!

Reply

Marsh Posté le 27-02-2003 à 14:33:41    

argh non, j'ai un bug!!
 
déjà je peux pas mettre un cront toutes les secondes et pis un pb de umount!
 
bon, je check!

Reply

Marsh Posté le 27-02-2003 à 14:37:23    

si tarrive a trouver comment faire pour toutes les secondes je veux bien ta methode :) j ai un archose et ce serait sympas :)
par contre je peux pas t aider sauf testersi camarche :D parceque moi et le perl hum

Reply

Marsh Posté le 27-02-2003 à 14:47:19    

cron ne fonctionne qu'en minute au mieux...
Par contre tu peux faire une boucle + sleep()
 
Pour le umount je vois pas trop comment tu vas gerer ca :-/

Reply

Marsh Posté le 27-02-2003 à 14:47:19   

Reply

Marsh Posté le 27-02-2003 à 15:52:15    

nouvelle version qui ce coup ci marche vraiment!!
 

Code :
  1. #!/usr/bin/perl -w
  2. while ()
  3. {
  4.     `sleep 5`;
  5.     open (R, "/var/log/messages" );
  6.    
  7.     while (<R> )
  8.     {
  9. push (@lignes, $_);
  10.     }
  11.     close (R);
  12.     $i=$#lignes;
  13.  
  14.     open (R2, "/etc/mtab" );
  15.     while (<R2> )
  16.     {
  17. if ($_ =~ /\/dev\/sda1/)
  18. {
  19.     $mount='ok';
  20. }
  21.     }
  22.          
  23.     close (R2);
  24.  
  25.     while ($i)
  26.     {
  27.  if ($lignes[$i] =~ /kernel: hub\.c: USB new device connect/)
  28. {
  29.     if (!$mount)
  30.     {
  31.  `mount -t vfat /dev/sda1 /home/machin/usb`;
  32.     }
  33.     last;
  34. }
  35. elsif ($lignes[$i] =~ /kernel: usb\.c: USB disconnect/)
  36. {
  37.     if ($mount)
  38.     {
  39.  `umount /home/machin/usb`;
  40.     }
  41.     last;
  42. }
  43. $i--;
  44.     }
  45.    
  46.     $mount='';
  47. }


 
bon par contre, je sais pas comment faire pour dire que l'utilisateur  "macin" monte le périph dans un dossier de son /home, et que c pas root qui s'en occupe!
paske pour l'instant, si tu mets ce script dans les actions du boot (au hasard rc.d5??) c root qui le fait, mais le user ne possède pas son dossier et le periph. Une idée??
 
en fait, je demande ça paske j'aimerais bien le mettre dans le bashrc ou profile pitêtre!!
 
en tout cas, j'attends vos commentaires!!
 
--edit--
comment on fait dans ce forum pour avoir une identation correecte et la coloration syntaxique???  :whistle:


Message édité par arghbis le 27-02-2003 à 15:53:44
Reply

Marsh Posté le 27-02-2003 à 16:05:04    

Comme ca :
 

Code :
  1. #!/usr/bin/perl -w
  2. while ()
  3. {
  4.     `sleep 5`;
  5.     open (R, "/var/log/messages" );
  6.    
  7.     while (<R> )
  8.     {
  9. push (@lignes, $_);
  10.     }
  11.     close (R);
  12.     $i=$#lignes;
  13.  
  14.     open (R2, "/etc/mtab" );
  15.     while (<R2> )
  16.     {
  17. if ($_ =~ /\/dev\/sda1/)
  18. {
  19.     $mount='ok';
  20. }
  21.     }
  22.          
  23.     close (R2);
  24.  
  25.     while ($i)
  26.     {
  27.  if ($lignes[$i] =~ /kernel: hub\.c: USB new device connect/)
  28. {
  29.     if (!$mount)
  30.     {
  31.  `mount -t vfat /dev/sda1 /home/machin/usb`;
  32.     }
  33.     last;
  34. }
  35. elsif ($lignes[$i] =~ /kernel: usb\.c: USB disconnect/)
  36. {
  37.     if ($mount)
  38.     {
  39.  `umount /home/machin/usb`;
  40.     }
  41.     last;
  42. }
  43. $i--;
  44.     }
  45.    
  46.     $mount='';
  47. }


Sinon ton histoire de monter par l'utilisateur, sépatro possible, car je te rapelle que Linux est un OS multi-utilisateurs, donc commentsavoir qui a pluggué la clef USB ???
 
Et pour le demontage, ca fonctionne ? alors que ton dev est plus la ?

Reply

Marsh Posté le 27-02-2003 à 16:06:27    

oui oui, le démontage marche très bien!!
 
je veux pas vraiment le faire monter par le user, mais je cherche l'option de mount qui permet au user d'écrire sur le périph!! j'ai essayé -o user, mais ça marche poas!

Reply

Marsh Posté le 27-02-2003 à 16:19:33    

allo????
y'a pas quelqu'un qui sait comment faire pour donner un accès en lecture à un user sur un periph monté par le root?? (sans faire de chmod bien sûr, uniquement avec une option de mount)
 
aller  [:kecje]

Reply

Marsh Posté le 27-02-2003 à 16:20:34    

arghbis a écrit :

allo????
y'a pas quelqu'un qui sait comment faire pour donner un accès en lecture à un user sur un periph monté par le root?? (sans faire de chmod bien sûr, uniquement avec une option de mount)
 
aller  [:kecje]  


 
mount --help  :whistle:  
 
La sortie :??: Ha oui c'est par la ...


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 27-02-2003 à 16:21:32    

-o guid=group_user
ou  
-o mode=666
 
enfin un truc dans le style...
Apres je suppose que c'est de la fat32 donc y a peut etre des changement au niveau du nom des options...

Reply

Marsh Posté le 27-02-2003 à 16:22:16    

tu voulais dire  :  [:sh@rdar]  
 
 
 [:madyodaseb]  [:fuel]  
 
Ps : sans rancune!!
 
edit
 
merci e_esprit, vais voir ça!!


Message édité par arghbis le 27-02-2003 à 16:22:54
Reply

Marsh Posté le 27-02-2003 à 16:24:22    

arghbis a écrit :

tu voulais dire  :  
 [:madyodaseb]  


 
:'(


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 27-02-2003 à 16:25:57    

aller koi, fais pas la tête!! on rigole là!!
 
 :hello:

Reply

Marsh Posté le 27-02-2003 à 16:33:31    

bon alors, aux dernières nouvelles, il prends pas en compte de chown ou chmod après le mount (spacool ça)!
 
sinon, j'ai ajouté une tite feature qui ouvre une fenêtre konqueror directement dans le dossier où est montée la clé (je m'en sert pas, mais c marrant de voir que ça marche!!)
 
j'attends toujours une idée pour permettre au user de pouvoir écrire dessus qd même!!

Reply

Marsh Posté le 27-02-2003 à 16:39:21    

Je m'incruste [:cupra], j'ai un petit pb avec un periph usb (un apn fuji) : s'il est branche lors du boot ca marche, mais si je branche une fois le systeme lance et que je fais mon mount, il dit que /dev/sda1 n'est pas un valid block device (de memoire)  :sweat:  
Comment je peux faire ? charger le module usb-storage que lorsque j'en ai besoin ? :heink:
 
Merci ! :hello:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 27-02-2003 à 16:41:30    

regardes le lien hotplug filé en haut de page, j'ai vu un truc sur le coldplug et un patch hotplug pour ton genre de périph!

Reply

Marsh Posté le 27-02-2003 à 16:42:37    

arghbis a écrit :

bon alors, aux dernières nouvelles, il prends pas en compte de chown ou chmod après le mount (spacool ça)!
 
sinon, j'ai ajouté une tite feature qui ouvre une fenêtre konqueror directement dans le dossier où est montée la clé (je m'en sert pas, mais c marrant de voir que ça marche!!)
 
j'attends toujours une idée pour permettre au user de pouvoir écrire dessus qd même!!


le -o mode=??? ne marche pas ?
zarb...

Reply

Marsh Posté le 27-02-2003 à 16:45:20    

ben y'a rien dans la doc sur ton -mode!!

Reply

Marsh Posté le 27-02-2003 à 16:46:10    

pour le pb des droits :
 
déjà, il faut que le dossier de montage ai les bon droits
 
pour faire monter par le user, essaye de mettre une ligne dans fstab (man fstab) avec un umask=0
 


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 27-02-2003 à 16:46:19    

Autant pour moi, pour la fat c'est :
-o gid=group,umask=XXX
 

Reply

Marsh Posté le 27-02-2003 à 16:52:39    

dans mon fstab, j'ai mis ça :
/dev/sda1          /mnt/USBkey          auto   rw,noauto,user,unhide     0 0
 
donc maintenant, faut que je mette le mnt/USBkey en 666??
c pas très sécurisé ça non??

Reply

Marsh Posté le 27-02-2003 à 16:57:27    

si t'as un group 'users' sert t'en !
gid="users",umask=660
 
Ou quelque chose dans le genre...
Sinon, tu peux toujours formater ta clef en ext2 (enfin peut etre... mais c'est risqué :D )

Reply

Marsh Posté le 27-02-2003 à 17:00:45    

ben c possible de formater en ext2, mais le principe de clé usb c d'échanger les données entre différentes plateformes. Or, l'ext2 en dehors de linux, c pas bien lu (c possible, mais c pas simple), alors que la vfat est supportée pratiquement partout facilement!!
 
j'ai pas de groupe users!

Reply

Marsh Posté le 27-02-2003 à 17:07:56    

arghbis a écrit :

ben c possible de formater en ext2, mais le principe de clé usb c d'échanger les données entre différentes plateformes. Or, l'ext2 en dehors de linux, c pas bien lu (c possible, mais c pas simple), alors que la vfat est supportée pratiquement partout facilement!!
 
j'ai pas de groupe users!


Bah t'en crée un... ou un autre nom... enfin un groupe qui regroupe que tes utilisateurs autorisés a ecrire sur la clef.

Reply

Marsh Posté le 27-02-2003 à 17:09:18    

ayé!!! ça marche!!
 
 [:spikler]  
 
j'ai ajouté mon user machin au groupe users, mis  
-o gid="users",umask=660
 
et ça rulez!!
 
re  [:spikler]

Reply

Marsh Posté le 27-02-2003 à 17:15:05    

dernière question : y-a-t-il un moyen de faire faire une tache en root au login d'un utilisateur (genre un utilisateur se log et ça lance une commande enb root)??

Reply

Marsh Posté le 27-02-2003 à 17:24:45    

arghbis a écrit :

dernière question : y-a-t-il un moyen de faire faire une tache en root au login d'un utilisateur (genre un utilisateur se log et ça lance une commande enb root)??


regardes du coté de sudo...

Reply

Marsh Posté le 27-02-2003 à 19:59:43    

salut , le script marche tout seul ? ou il faut faire des manip en plus  
la je regarde du cote de hot plug mais ca a l air d etre le bordel ;)  

Reply

Marsh Posté le 27-02-2003 à 20:42:30    

ben mon script marche tout seul et très bien d'ailleurs!!
le dernier code que j'ai donné marche, mais que pour root!
là je suis pas sur mon pc, donc je filerais le code demain, de même que le code écrit pour le service (je démarre le script au moment du boot, c plus pratique).
 
@demain

Reply

Marsh Posté le 27-02-2003 à 21:00:56    

oki merci :) tres sympas
ps hotplug c vraiment le bins ;)  

Reply

Marsh Posté le 28-02-2003 à 10:13:03    

Code :
  1. #!/usr/bin/perl -w
  2. while ()
  3. {
  4.     `sleep 2`;
  5.     open (R, "/var/log/messages" );
  6.    
  7.     while (<R> )
  8.     {
  9. push (@lignes, $_);
  10.     }
  11.     close (R);
  12.     $i=$#lignes;
  13.  
  14.     open (R2, "/etc/mtab" );
  15.     while (<R2> )
  16.     {
  17. if ($_ =~ /\/dev\/sda1/)
  18. {
  19.     $mount='ok';
  20. }
  21.     }
  22.          
  23.     close (R2);
  24.  
  25.     while ($i)
  26.     {
  27.  if ($lignes[$i] =~ /kernel: hub\.c: USB new device connect/)
  28. {
  29.     if (!$mount)
  30.     {
  31.  `mount -t vfat -o gid="users",umask=660 /dev/sda1 /mnt/USBkey`;
  32.     }
  33.     last;
  34. }
  35. elsif ($lignes[$i] =~ /kernel: usb\.c: USB disconnect/)
  36. {
  37.     if ($mount)
  38.     {
  39.  `umount /dev/sda1`;
  40.     }
  41.     last;
  42. }
  43. $i--;
  44.     }
  45.    
  46.     $mount='';
  47.      @lignes='';
  48. }


 
alors ça c mon script perl, que j'ai appelé automountUSBKey.pl
 
maintenant, il faut mettre un automountUSBKey dans le /etc/init.d/ et le rendre exécutable :

Code :
  1. #!/bin/sh
  2. # description: mount auto for usb mass storage support
  3. # chkconfig: 2345 99 00
  4. case "$1" in
  5. 'start')
  6. perl /home/machin/automountUSBKey.pl & 2>&1 >/dev/null
  7. touch /var/lock/subsys/automountUSBKEY
  8. ;;
  9. 'stop')
  10. rm -f /var/lock/subsys/automountUSBKEY
  11. ;;
  12. *)
  13. echo "Usage: $0 { start | stop }"
  14. ;;
  15. esac
  16. exit 0


 
à modifier évidemment en fonction de votre arborescence de fichiers!!

Reply

Marsh Posté le 28-02-2003 à 10:16:15    

Et le demontage ca fonctionne ? il rale pas ?

Reply

Marsh Posté le 28-02-2003 à 10:17:52    

ben pq il ralerait????  [:the time]

Reply

Marsh Posté le 28-02-2003 à 10:25:08    

arghbis a écrit :

ben pq il ralerait????  [:the time]  


Parce que quand tu lui dit de demonter, le device n'est deja plus la, (puisque la commande umount est executé quand le périphérique a été detecté comme 'disconnected';).

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed