Retourner aux forums || Retourner au forum

Programmation.shell : Liste des périphériques

Posté par redrum () le 05 juillet 2009
0
Bonjour,

Dans le cadre d'un script, je cherche à lister les périphériques DVD d'un PC pour qu'un utilisateur puisse sélectionner celui qu'il veut.

Y-a-t-il moyen de faire autrement (et plus fiable) que cela : http://pastebin.com/m43a3cfb5

Merci d'avance

> Lire le message (6 commentaires, moyenne: 2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

ben

Posté par NeoX () le 05/07/2009 à 23:22. (lien). Évalué à 3.

à part que ton script à besoin d'etre root pour bien fonctionner
(à cause du lshw)

qu'il lance 2 fois lshw
qu'il boucle 1 fois pour remplir, une fois pour afficher la liste

alors qu'un simple
ls -l /dev/* | grep cdrom | grep dev | awk '{print $9}'
pourrait suffir

que la personne pourrait saisir /dev/xxx
plutot que le 1/2/3/4/5 que tu proposes....

je ne vois pas trop ce qu'on pourrait ameliorer dans ton script

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
  • [^]Re: ben

    Posté par redrum () le 06/07/2009 à 08:17. (lien). Évalué à 1.

    Merci pour ta réponse.

    Le but est d'éviter de saisir /dev/xxx à la main sinon je ne me serai pas embêté de la sorte...

    lshw fonctionne bien sans le root sous ubuntu même s'il se plaint qu'il en voudrait le statut. Par contre, j'ignore si c'est le cas sur toutes les autres distributions.

    Evidemment, j'aurai pu me contenter de ls -l /dev/* | grep cdrom | grep dev | awk '{print $9}' mais /dev/cdromX est-elle à coup sur utilisée par toutes les distributions pour caractériser les périphériques cd/dvd ? D'autre part, si on cherche des périphériques DVD uniquement, on ramasse aussi les périphériques CD simples avec cette commande

    • [^]Re: ben

      Posté par NeoX () le 06/07/2009 à 08:53. (lien). Évalué à 2.

      en tant qu'utilisateur ordinaire, lshw ne me renvoie rien avec ton script sous ubuntu 9.04
      c'est pour cela que j'avais fait la remarque sur le sudo ou le fait d'etre root

      ma ligne avec le ls, fait un grep sur cdrom
      hors les peripheriques dvd/cd appartiennent aux groupes cdrom
      et c'est ceux là que je filtrais.

      quel est l'interet de selectionner le lecteur par 1/2/3
      à la place de
      /dev/sr0
      /dev/sg0
      /dev/dvd
      /dev/cdrom

      dans le cas d'une machine avec un seul lecteur, c'est le meme peripherique

      dans un cas avec de lecteurs multiples l'utilisateur qui ne connait pas le nom de ses peripheriques (/dev/xxx) ne pourra de toute facon pas savoir lequel est le bon

      et si c'est parce qu'il a un lecteur de CD et un lecteur DVD,
      alors il te suffit de selectionner avec ton script directement le lecteur de DVD

      --
      Apprendre par les autres, c'est bien.
      Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
      • [^]Re: ben

        Posté par redrum () le 06/07/2009 à 11:49. (lien). Évalué à 2.

        Merci pour l'information relative à ubuntu 9.04. Je n'utilise pas cette version là.

        les périphériques dvd/cd ont beau appartenir aux groupes cdrom, on n'a aucune assurance que les périphériques qui y sont soient effectivement un dvd. Ils peuvent très bien n'être que CD. Or, je veux obligatoirement ne faire apparaître que les périphériques DVD.

        je sélectionne le lecteur par 1,2,3 car c'est le seul moyen (du moins, il me semble) que j'ai trouvé pour compter le nombre de lecteur et en même temps se rendre indépendant de la typologie adoptés par les distributions (qui me dit que sur une distribution X ou Y, on
        utilise /dev/sr0 ou /dev/sg0 ou /dev/dvd ou /dev/cdrom ou autre chose).

        L'utilisateur qui ne connaît pas le nom de ses périphériques (/dev/xxx) ne pourra de toute façon pas savoir lequel est le bon. On est d'accord. Par contre, le fait de lui indiquer que /dev/scd0 est le master et que le /dev/scd1 est le slave peut être un indice complémentaire.

Hal

Posté par Pascal Terjan (Jabber id, page perso, ) le 06/07/2009 à 08:32. (lien). Évalué à 3.

Un truc genre ça (j'ai eu la flemme de copier les parties pas intéressantes):

i=0
echo "Select the DVD device you would like to use:"
for udi in $(hal-find-by-property --key storage.drive_type --string cdrom); do
  if [ "$(hal-get-property --key storage.cdrom.dvd --udi $udi)" = "true" ]; then
    DvdDevice[$i]=$(hal-get-property --udi $udi --key block.device)
    echo "$i) ${DvdDevice[$i]} ($(hal-get-property --udi $udi --key storage.model))"
    let i=i+1
  fi
done
read DvdDeviceChoice

  • [^]Re: Hal

    Posté par redrum () le 06/07/2009 à 08:42. (lien). Évalué à 1.

    Merci Pascal; je teste cela ce soir...

Revenir en haut de page || Retourner aux forums || Retourner au forum