+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Nouveau Membre du Club Avatar de zentaf
    Inscrit en
    mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : mars 2007
    Messages : 122
    Points : 34
    Points
    34

    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 chevronné
    Inscrit en
    juillet 2012
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 192
    Points : 690
    Points
    690

    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 :
    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
    Nouveau Membre du Club Avatar de zentaf
    Inscrit en
    mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : mars 2007
    Messages : 122
    Points : 34
    Points
    34

    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 chevronné
    Inscrit en
    juillet 2012
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 192
    Points : 690
    Points
    690

    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
    Nouveau Membre du Club Avatar de zentaf
    Inscrit en
    mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : mars 2007
    Messages : 122
    Points : 34
    Points
    34

    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..

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •