Précédent   Forum du club des développeurs et IT Pro > Général Développement > Programmation système > Linux
Linux Forum d'entraide sur la programmation Linux : shell, système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2012, 15h46   #1
zentaf
Nouveau Membre du Club
 
Avatar de zentaf
 
Inscription : mars 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2007
Messages : 118
Points : 30
Points : 30
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..
zentaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 20h52   #2
grim7reaper
Membre régulier
 
Inscription : juillet 2012
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 17
Points : 73
Points : 73
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é.
grim7reaper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 10h51   #3
zentaf
Nouveau Membre du Club
 
Avatar de zentaf
 
Inscription : mars 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2007
Messages : 118
Points : 30
Points : 30
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..
zentaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h35   #4
grim7reaper
Membre régulier
 
Inscription : juillet 2012
Messages : 17
Détails du profil
Informations forums :
Inscription : juillet 2012
Messages : 17
Points : 73
Points : 73
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
grim7reaper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h18   #5
zentaf
Nouveau Membre du Club
 
Avatar de zentaf
 
Inscription : mars 2007
Messages : 118
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mars 2007
Messages : 118
Points : 30
Points : 30
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..
zentaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h39.


 
 
 
 
Partenaires

Hébergement Web