IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Détection du débranchement usb


Sujet :

Linux

  1. #1
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut Détection du débranchement usb
    Bonjour à tous,

    Je suis entrain de coder une lib .so (en C, sous Linux) et j'ai besoin d'y inclure un moyen pour détecter le débranchement d'une clef usb afin de déclencher une certaine action; dans mon cas, le déverrouillage de la session utilisateur en mode graphique.

    Du coup, j'ai trois questions à vous poser, pour avancer dans mon projet :

    1/ Comment puis je détecter que l'utilisateur ait débranché sa clef?(un moyen autre qu'une boucle qui interroge la clef chaque X sec pour vérifier sa présence)

    2/ Quelles fonction(s) à invoquer pour le déverrouillage de la session en mode graphique? (un truc qui fait la même chose que ctrl+alt+l)

    3/ En mode console, qu'est ce qui peut remplacer le déverrouillage en mode graphique, genre, on reprend la session après avoir réinséré sa clef (je ne veux pas aller jusqu'au logout pour ne pas perdre ses données non enregistrées)

    Merci à vous,
    ilikecz.
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Salut,

    Citation Envoyé par zentaf Voir le message
    1/ Comment puis je détecter que l'utilisateur ait débranché sa clef?(un moyen autre qu'une boucle qui interroge la clef chaque X sec pour vérifier sa présence)
    Je serais toi, je passerais par D-Bus (dans cas, plus précisement par UDisks)
    En ajoutant un handler sur le signal DeviceRemoved tu devrais arriver à ce que tu veux.

    Là je te mets un exemple rapide en Python, pour que tu vois un peu la logique de l’API (ça sera pas sorcier de retraduire ça en C )
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    import dbus
    import gobject
    from dbus.mainloop.glib import DBusGMainLoop
     
    def handler(sender=None):
        print "Signal de %r" % sender
     
    # Boucle evenementiel
    DBusGMainLoop(set_as_default=True)
    loop = gobject.MainLoop()
     
    # "Connexion" au bus système.
    bus = dbus.SystemBus()
    # "Connexion" à UDisks
    udisk = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
    # Récupération de l’interface.
    udisk_interface = dbus.Interface(udisk, "org.freedesktop.UDisks")
    # On surveille le retrait de périphériques.
    udisk_interface.connect_to_signal("DeviceRemoved", handler)
     
    loop.run()

    Citation Envoyé par zentaf Voir le message
    2/ Quelles fonction(s) à invoquer pour le déverrouillage de la session en mode graphique? (un truc qui fait la même chose que ctrl+alt+l)
    Là encore, je regarderais du côté de D-Bus.
    Je sais qu’il y a un objet org.freedesktop.ScreenSaver qui fournit une méthode Lock.
    Il y a peut-être aussi moyen de déverouiller la session.

    Citation Envoyé par zentaf Voir le message
    3/ En mode console, qu'est ce qui peut remplacer le déverrouillage en mode graphique, genre, on reprend la session après avoir réinséré sa clef (je ne veux pas aller jusqu'au logout pour ne pas perdre ses données non enregistrées)
    Là j’ai pas trop compris, désolé.

  3. #3
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par grim7reaper Voir le message
    Là j’ai pas trop compris, désolé.
    Merci pour les deux premières pistes, je vais tester ça ce week-end.

    Sinon, pour la troisième question, en fait, tu vois quand on fait ctrl+alt+l en mode graphique, on verrouille la session user et on la reprend en retapant le mot de passe (dans mon cas débrancher/rebrancher la clef usb).

    Je veux un moyen à peu près pareil pour la console mais franchement je ne vois pas ce que c'est : si l'user débranche la clef il ne pourra pas utiliser la console, une fois re-branchée, il reprend l'utilisation.
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Citation Envoyé par zentaf Voir le message
    Je veux un moyen à peu près pareil pour la console mais franchement je ne vois pas ce que c'est : si l'user débranche la clef il ne pourra pas utiliser la console, une fois re-branchée, il reprend l'utilisation.
    Si j’ai bien compris ce que tu veux faire, je crois que le programme vlock fait ce que tu souhaites (verrouillage d’un session en pseudo-TTY).
    Donc en jetant un œil à son code source (qui est en C en plus), tu devrais trouver ton bonheur

  5. #5
    Membre du Club Avatar de zentaf
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par grim7reaper Voir le message
    Si j’ai bien compris ce que tu veux faire, je crois que le programme vlock fait ce que tu souhaites (verrouillage d’un session en pseudo-TTY).
    Donc en jetant un œil à son code source (qui est en C en plus), tu devrais trouver ton bonheur
    oui c'est un peu ça ce que je cherche ça faire, je vais voir ça ce week end.
    Je vous tiendrai au courant.
    Merci.
    Les hommes sont des caisses fermées dont la clé est l'épreuve..

Discussions similaires

  1. Java et détection de périphériques USB
    Par b_zakaria dans le forum Général Java
    Réponses: 1
    Dernier message: 05/05/2009, 10h49
  2. détection de l'usb
    Par lylia SI dans le forum Mandriva / Mageia
    Réponses: 5
    Dernier message: 21/02/2008, 18h32
  3. Détection de clé usb
    Par AT dans le forum Débuter
    Réponses: 4
    Dernier message: 11/01/2008, 13h50
  4. Détection supports externes (usb, cd, dvd ..)
    Par barbiche dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 19/10/2007, 13h22
  5. Boot sur clef USB - Détection de clef USB
    Par jb2009 dans le forum Matériel
    Réponses: 2
    Dernier message: 29/08/2007, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo