Forum Linux.debian/ubuntu montage automatique

Posté par  (site web personnel) .
Étiquettes :
0
24
jan.
2005

Salut, je sais que c'est surement une question que vous voyez souvent mais je n'ai pas trouvé d'aide claire.

En fait, j'aimerais que ma debian détecte directement un cdrom quand il est inséré et qu'il soit monté automatiquement également.

Je ne sais pas quel est le logiciel à installer le plus adapté à KDE. J'ai vu un logiciel qui s'appel HAL mais que fait-il exactement ?

mon fstab est correctement rempli, donc je sais faire des mount et umount sans problème (ex: mount /media/cdrom0) et hops c'est fait

merci bye

  • # ubuntu?

    Posté par  (site web personnel) . Évalué à 2.

    Je dirais un
    apt-get install pmount

    pour avoir la meme chose que sous ubuntu. Par contre je ne sais pas si tu as besoin de configurer quelque chose ;) Tiens nous au courant si je dois tester un jour :)
    • [^] # Re: ubuntu?

      Posté par  . Évalué à 2.

      je me suis bidouillé un petit script python qui se connecte a HAL via DBUS et qui utilise pmount pour monter les clefs usb et les cdrom.
      
      c'est en grande partie repompé de hal-device-manager
      et il faut parfois utiliser pumount a la main pour demonter.
      
      en attendant une vraie integration dans kde (deja dans le CVS je crois)...
      
      
      import sys, os
      import dbus
      import gtk
      
      class DeviceWatcher:
      
          def __init__ (self):
              
              self.bus = dbus.SystemBus()
              self.hal_service = self.bus.get_service('org.freedesktop.Hal')
              self.hal_manager = self.hal_service.get_object("/org/freedesktop/Hal/Manager", "org.freedesktop.Hal.Manager")
              #print self.hal_manager.ListServices()
              
              # gdl_changed will be invoked when the Global Device List is changed
              # per the hal spec
              self.bus.add_signal_receiver(self.gdl_changed,
                           "DeviceAdded",
                                           "org.freedesktop.Hal.Manager",
                                           "org.freedesktop.Hal",
                                           "/org/freedesktop/Hal/Manager")
              self.bus.add_signal_receiver(self.gdl_changed,
                           "DeviceRemoved",
                                           "org.freedesktop.Hal.Manager",
                                           "org.freedesktop.Hal",
                                           "/org/freedesktop/Hal/Manager")
              self.bus.add_signal_receiver(self.gdl_changed,
                           "NewCapability",
                                           "org.freedesktop.Hal.Manager",
                                           "org.freedesktop.Hal",
                                           "/org/freedesktop/Hal/Manager")
      
              # Add listeners for all devices
              try:
                  device_names = self.hal_manager.GetAllDevices()
              except:
                  print  "Could not get device list. Make sure hald is running!\n"
                  sys.exit(1)
      
              for name in device_names:
                  
                  dev = self.hal_service.get_object(name,  "org.freedesktop.Hal.Device")
                      
                  if dev.PropertyExists('info.category') and dev.GetProperty('info.category') == 'volume':
                      self.add_device_signal_recv (name)
                      parent = self.hal_service.get_object(dev.GetProperty('info.parent') , "org.freedesktop.Hal.Device")
                      print dev.GetProperty('info.product') 
              
              
          def add_device_signal_recv (self, udi):
              print "listening: " + udi
              self.bus.add_signal_receiver(self.device_changed,
                           "PropertyModified",
                           "org.freedesktop.Hal.Device",
                           "org.freedesktop.Hal",
                           udi)
              return
              self.bus.add_signal_receiver(self.device_changed,
                           "Condition",
                           "org.freedesktop.Hal.Device",
                           "org.freedesktop.Hal",
                           udi)
      
      
          def remove_device_signal_recv (self, udi):
              self.bus.remove_signal_receiver(self.device_changed,
                                           "PropertyModified",
                                           "org.freedesktop.Hal.Device",
                                           "org.freedesktop.Hal",
                                           udi)
              return
              self.bus.remove_signal_receiver(self.device_changed,
                                           "Condition",
                                           "org.freedesktop.Hal.Device",
                                           "org.freedesktop.Hal",
                                           udi)
      
       
       
          def device_changed(self, dbus_if, dbus_member, dbus_svc,
                             dbus_obj_path, dbus_message):
              """This method is called when signals on the Device interface is
              received"""
              print "entering device_changed"
              print dbus_member
              if dbus_member=="Condition":
                  args = dbus_message.get_args_list()
                  print  "\nCondition %s, device=%s"%(args[0], dbus_obj_path)
                  print "  message = ", args 
                  
              elif dbus_member=="PropertyModified":
                  args = dbus_message.get_args_list()
                  num_modifications = args[0]
                  
                  print "\nPropertyModified, device=%s"%dbus_obj_path
      
                  for i in range(0, num_modifications):
                      property_name = args[1+3*i]
                      removed = args[2+3*i]
                      added = args[3+3*i]
      
                      print "  key=%s, rem=%d, add=%d"%(property_name, removed, added)
                      if property_name=="info.parent":
                          pass     
                      else:
                          device_udi = dbus_obj_path
                          device_udi_obj = self.hal_service.get_object(device_udi,
                                                         "org.freedesktop.Hal.Device")
                          
                          if device_udi_obj.PropertyExists(property_name):
                              print "  value=%s"%(device_udi_obj.GetProperty(property_name))
      
      
          def gdl_changed(self, dbus_if, dbus_member, dbus_svc, dbus_obj_path, dbus_message):
              """This method is called when a HAL device is added or removed."""
      
              print "entering gdl_changed"
              print dbus_member
              
              if dbus_member=="DeviceAdded":
                  [device_udi] = dbus_message.get_args_list()
                  print "\nDeviceAdded, udi=%s"%(device_udi)
                  self.add_device_signal_recv (device_udi)
                  dev = self.hal_service.get_object(device_udi,  "org.freedesktop.Hal.Device")
                  
                  #conditions pour etre montable
                  if dev.PropertyExists('info.category') and dev.GetProperty('info.category') == 'volume':
                      
                      fstype = dev.GetProperty('volume.fstype')
                      blockdevice = dev.GetProperty('block.device') 
                      label = dev.GetProperty('info.product').replace(" ","_")
                      
                      if fstype == 'iso9660':
                          #cdrom
                          cmd = "pmount %s %s" % (blockdevice,label)
                      else:
                          #usb
                          label = 'usb_' + label
                          cmd = "pmount %s %s" % (blockdevice,label)
                              
                      print cmd
                      os.system(cmd)
                  
              elif dbus_member=="DeviceRemoved":
                  [device_udi] = dbus_message.get_args_list()
                  print "\nDeviceRemoved, udi=%s"%(device_udi)
                  self.remove_device_signal_recv (device_udi)
      
      
              elif dbus_member=="NewCapability":
                  [device_udi, cap] = dbus_message.get_args_list()
                  print "\nNewCapability, cap=%s, udi=%s"%(cap, device_udi)
                  device_dbus_obj = self.hal_service.get_object(device_udi,
                                                           "org.freedesktop.Hal.Device")
                  print  device_dbus_obj.GetAllProperties()
              else:
                  print "*** Unknown signal %s"%dbus_member
                  
      
      watcher = DeviceWatcher()
      gtk.main()
      
      • [^] # Re: ubuntu?

        Posté par  (site web personnel) . Évalué à 3.

        en attendant une vraie integration dans kde (deja dans le CVS je crois)...

        Ça veut dire que ce sera intégré dans KDE 3.4 ?
  • # re :

    Posté par  (site web personnel) . Évalué à 3.

    j'aimerais que ma debian détecte directement un cdrom quand il est inséré et qu'il soit monté automatiquement également.

    MagicDev je presume ; cependant il a été conçu pour GNOME :

    jerome@glop:~$ apt-cache show magicdev
    Package: magicdev
    Priority: optional
    Section: gnome
    Installed-Size: 692
    Maintainer: Sean Harshbarger <harshy@dersoldat.org>
    Architecture: i386
    Version: 1.1.6-2
    Depends: libart-2.0-2, libatk1.0-0 (>= 1.4.1), libbonobo2-0 (>= 2.4.3), libbonoboui2-0 (>= 2.4.3), libc6 (>= 2.3.2.ds1-4), libgconf2-4 (>= 2.4.0.1), libglade2-0, libglib2.0-0 (>= 2.2.3), libgnome2-0, libgnomecanvas2-0, libgnomeui-0, libgnomevfs2-0 (>= 2.4.1), libgnomevfs2-common (>= 2.4.1), libgtk2.0-0 (>= 2.2.1), libice6 | xlibs (>> 4.1.0), liborbit2 (>= 1:2.8.0), libpango1.0-0 (>= 1.2.1), libpopt0 (>= 1.7), libsm6 | xlibs (>> 4.1.0), libx11-6 | xlibs (>> 4.1.0), libxml2 (>= 2.6.8), zlib1g (>= 1:1.2.1), gnome-mime-data
    Recommends: gnome-media, nautilus, nautilus-cd-burner, totem
    Filename: pool/main/m/magicdev/magicdev_1.1.6-2_i386.deb
    Size: 47396
    MD5Sum: e059fd48441cf78e882c3f5ca5ebc096
    Description: A GNOME daemon for automatically mounting/playing CDs
    Magicdev is a daemon that runs within the GNOME environment and
    detects when a CD is removed or inserted. Magicdev handles running
    autorun programs on the CD, updating the File Manager, and playing
    audio CDs.

    J'ai vu un logiciel qui s'appel HAL mais que fait-il exactement ?

    http://www.redhat.com/magazine/003jan05/features/hal/(...)

Suivre le flux des commentaires

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