O " Como posso ouvir eventos 'usb device inserted' no Linux, em Python? "a pergunta tem um script Python de amostra muito curto usando pyudev . Esse script pode detectar facilmente quando um dispositivo é conectado ou desconectado, monitorando o device-event
do subsistema usb
.
Além do mais, o pyudev é uma implementação puramente python e está disponível no Python 2 e no Python 3.
Com base nesse código de exemplo, eu escrevi auto_exec_xinput_xset_upon_usb_device_change.py (consulte também < href="https://bitbucket.org/denilsons/small_scripts/src/default/auto_configure_upon_usb_device_change.py"> a versão mais recente ). Funciona no Python 2 e no Python 3.
#!/usr/bin/env python
import functools
import os.path
import pyudev
import subprocess
def main():
BASE_PATH = os.path.abspath(os.path.dirname(__file__))
path = functools.partial(os.path.join, BASE_PATH)
call = lambda x, *args: subprocess.call([path(x)] + list(args))
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='usb') # Remove this line to listen for all devices.
monitor.start()
for device in iter(monitor.poll, None):
# I can add more logic here, to run only certain kinds of devices are plugged.
call('foobar.sh')
if __name__ == '__main__':
main()