ÎÞÂÛÊÇÈÕ³£°ì¹«ÖеļüÅÌ¡¢Êó±ê£¬»¹ÊÇרҵӦÓÃÖеĴ洢É豸¡¢µ÷ÊÔ¹¤¾ß£¬USBÉ豸ÎÞ´¦²»ÔÚ
Òò´Ë£¬¶ÔÓÚϵͳ¹ÜÀíÔ±¡¢¿ª·¢ÈËÔ±»òÈκÎÐèÒª×Ô¶¯ÏìÓ¦USBÉ豸²åÈëʼþµÄÓû§À´Ëµ£¬ÕÆÎÕÔÚLinuxϵͳϼàÌýUSBÉ豸²åÈëµÄ¼¼ÊõÏÔµÃÓÈÎªÖØÒª
±¾ÎĽ«ÉîÈë̽ÌÖÈçºÎÔÚLinux»·¾³Ï¸ßЧ¼àÌýUSBÉ豸µÄ²åÈëʼþ£¬²¢¹¹½¨Ò»Ì×ʵʱÏìӦϵͳ£¬È·±£ÏµÍ³Äܹ»×Ô¶¯Ê¶±ð²¢´¦ÀíнÓÈëµÄUSBÉ豸
Ò»¡¢ÒýÑÔ£ºUSB¼àÌýµÄÖØÒªÐÔ USB£¨Universal Serial Bus£©¼¼Êõ×Ô1996ÄêÍÆ³öÒÔÀ´£¬Æ¾½èÆä¼´²å¼´ÓᢸßËÙÊý¾Ý´«ÊäºÍ¹ã·ºµÄ¼æÈÝÐÔ£¬Ñ¸ËÙ³ÉΪ¼ÆËã»úÁ¬½ÓÍâÉèµÄÊ×Ñ¡±ê×¼
È»¶ø£¬Ëæ×ÅUSBÉ豸µÄÆÕ¼°£¬ÈçºÎÓÐЧ¹ÜÀíÕâЩÉ豸£¬ÌرðÊÇÔÚËüÃDZ»²åÈëϵͳʱ×Ô¶¯Ö´ÐÐÌØ¶¨²Ù×÷£¬³ÉΪÁËÒ»¸öÌôÕ½
¶ÔÓÚ·þÎñÆ÷¹ÜÀíÀ´Ëµ£¬×Ô¶¯¹ÒÔØUSB´æ´¢É豸¡¢¼à¿Ø²¢ÏÞÖÆÎ´¾ÊÚȨµÄUSBÉ豸½ÓÈ룬ÊÇÈ·±£Êý¾Ý°²È«ºÍά»¤ÏµÍ³Îȶ¨µÄ¹Ø¼ü
ÔÚ¿ª·¢»·¾³ÖУ¬×Ô¶¯ÅäÖûò²âÊÔнÓÈëµÄUSBµ÷ÊÔÉ豸£¬Äܹ»ÏÔÖøÌá¸ß¹¤×÷ЧÂÊ
´ËÍ⣬ÔÚ½ÌÓý»ò¹«¹²Ê¹Óó¡¾°ÖУ¬Í¨¹ý¼à¿ØUSBÉ豸µÄ½ÓÈëÇé¿ö£¬¿ÉÒÔʵʩ·ÃÎÊ¿ØÖƲßÂÔ£¬±£»¤Ãô¸ÐÊý¾Ý²»±»Ð¹Â¶
¶þ¡¢LinuxϵÄUSB¼àÌý»úÖÆ Linux²Ù×÷ϵͳÒÔÆäÇ¿´óµÄÄں˺ͷḻµÄ¹¤¾ß¼¯£¬ÎªUSBÉ豸µÄ¼àÌýºÍ¹ÜÀíÌṩÁ˶àÖÖ;¾¶
ÕâЩ»úÖÆÖ÷Òª·ÖΪÁ½Àࣺ»ùÓÚÄں˵ĻúÖÆºÍÓû§¿Õ¼äµÄ¹¤¾ß
2.1 Äں˼¶±ðµÄUSB¼àÌý LinuxÄÚºËÌṩÁËudev£¨Userspace Device Manager£©»úÖÆ£¬ÓÃÓÚÉ豸µÄ¹ÜÀíºÍʼþ֪ͨ
udevͨ¹ý¼àÌýÄں˷¢³öµÄÉ豸Ìí¼Ó¡¢ÒƳýµÈʼþ£¬Äܹ»ÊµÊ±¸üÐÂÉ豸Îļþϵͳ£¨Èç/dev/£©£¬²¢Ö´ÐÐÓû§Ö¸¶¨µÄ½Å±¾»òÃüÁî
- udevadm monitor£ºÕâÊÇÒ»¸öÃüÁîÐй¤¾ß£¬ÓÃÓÚʵʱ¼à¿Øudevʼþ
ͨ¹ýÔËÐÐ`udevadm monitor --udev`£¬¿ÉÒÔʵʱ²é¿´USBÉ豸²åÈë¡¢°Î³öµÈʼþ
- udevadm info£ºÓÃÓÚ²éÑ¯ÌØ¶¨É豸µÄÏêϸÐÅÏ¢£¬°üÀ¨É豸ÊôÐÔ¡¢È¨ÏÞÉèÖõȣ¬ÓÐÖúÓÚ±àдÕë¶ÔÐÔµÄudev¹æÔò
- udev¹æÔò£ºudev¹æÔòÎļþλÓÚ`/etc/udev/rules.d/`Ŀ¼Ï£¬Í¨¹ý±àд¹æÔòÎļþ£¬¿ÉÒÔ¶¨Òåµ±ÌØ¶¨É豸²åÈëʱִÐеIJÙ×÷£¬ÈçÉèÖÃȨÏÞ¡¢´´½¨·ûºÅÁ´½Ó¡¢ÔËÐнű¾µÈ
2.2 Óû§¿Õ¼äµÄUSB¼àÌý¹¤¾ß ³ýÁËÄں˼¶±ðµÄ»úÖÆ£¬LinuxÉçÇø»¹¿ª·¢ÁËһϵÁÐÓû§¿Õ¼äµÄ¹¤¾ß£¬ÓÃÓÚ¸üÖ±¹ÛµØ¼à¿ØUSBÉ豸
- lsusb£ºÓÃÓÚÁгöµ±Ç°Á¬½ÓµÄËùÓÐUSBÉ豸¼°ÆäÏêϸÐÅÏ¢£¬ËäÈ»²»ÄÜÖ±½Ó¼àÌýʼþ£¬µ«¿ÉÒÔ×÷ΪÕï¶Ï¹¤¾ßʹÓÃ
- dmesg£ºÏÔʾÄں˻·»º³åÇøµÄÏûÏ¢£¬°üÀ¨USBÉ豸²å°ÎµÄÈÕÖ¾ÐÅÏ¢
ͨ¹ý`dmesg | grepusb`¿ÉÒÔ¿ìËÙɸѡ³öUSBÏà¹ØµÄÈÕÖ¾
- inotifywait£ºËäÈ»Ö÷ÒªÓÃÓÚÎļþϵͳʼþµÄ¼à¿Ø£¬µ«½áºÏ`udevadm trigger`ÃüÁҲ¿ÉÒÔ¼ä½ÓʵÏÖ¶ÔUSBÉ豸²åÈëµÄ¼àÌý
Èý¡¢¹¹½¨ÊµÊ±ÏìӦϵͳ Òª¹¹½¨Ò»¸öÄܹ»ÊµÊ±¼àÌýUSBÉ豸²åÈë²¢×÷³öÏìÓ¦µÄϵͳ£¬ÐèÒª×ÛºÏÔËÓÃÉÏÊö»úÖÆ
ÒÔÏÂÊÇÒ»¸ö¾ßÌåµÄʵÏÖ²½Ö裺 3.1 ±àдudev¹æÔò Ê×ÏÈ£¬±àдһ¸öudev¹æÔòÎļþ£¬ÓÃÓÚ¶¨Òåµ±USBÉ豸²åÈëʱִÐеIJÙ×÷
ÀýÈ磬´´½¨Ò»¸öÃûΪ`99-usb-monitor.rules`µÄÎļþ£¬ÄÚÈÝÈçÏ£º /etc/udev/rules.d/99-usb-monitor.rules SUBSYSTEM==usb, ENV{DEVTYPE}==usb_device, RUN+=/path/to/your/script.sh ÕâÀïµÄ`/path/to/your/script.sh`Êǵ±USBÉ豸²åÈëʱ½«±»Ö´ÐеĽű¾Â·¾¶
3.2 ±àдÏìÓ¦½Å±¾ ½ÓÏÂÀ´£¬±àдÏìÓ¦½Å±¾`script.sh`£¬ÓÃÓÚÖ´ÐоßÌåµÄ²Ù×÷
ÀýÈ磬¿ÉÒԼǼÉ豸ÐÅÏ¢¡¢×Ô¶¯¹ÒÔØ´æ´¢É豸»ò·¢ËÍ֪ͨµÈ
!/bin/bash »ñÈ¡É豸ÐÅÏ¢ DEVICE_ID=$(udevadm info --query=all --name=$DEVNAME | grepID_VENDOR_ID) DEVICE_NAME=$(udevadm info --query=all --name=$DEVNAME | grepID_MODEL_ID) ¼Ç¼É豸ÐÅÏ¢µ½ÈÕÖ¾Îļþ echo $(date): New USB device detected - Vendor ID: $DEVICE_ID, Model ID: $DEVICE_NAME ] /var/log/usb_insertions.log Èç¹ûÉ豸ÊÇ´æ´¢É豸£¬³¢ÊÔ¹ÒÔØ if ¡¾¡¾ $DEVICE_ID- == 1d6b ¡¿¡¿; then # ʾÀý£º¹ýÂ˳ö×ÜÏß¿ØÖÆÆ÷£¬Êµ¼ÊÓ¦¸ù¾Ý¾ßÌåÉ豸IDµ÷Õû echo Skipping bus controller... else MOUNT_POINT=/mnt/usb_device mkdir -p $MOUNT_POINT mount /dev/sdX1 $MOUNT_POINT ×¢Ò⣺ÕâÀïµÄ/dev/sdX1ÐèÒª¸ù¾Ýʵ¼ÊÇé¿öµ÷Õû echo Mounted $DEVICE_NAME at $MOUNT_POINT ] /var/log/usb_mountings.log fi ×¢Ò⣺ÉÏÊö½Å±¾ÖеÄ/dev/sdX1ÊÇÒ»¸öռλ·û£¬Êµ¼ÊʹÓÃʱÐèÒª¸ù¾ÝÉ豸²åÈëºóµÄʵ¼ÊÉ豸·¾¶½øÐе÷Õû
¿ÉÒÔͨ¹ý`lsblk`»ò`fdisk -l`ÃüÁî²é¿´µ±Ç°Á¬½ÓµÄ´æ´¢É豸
3.3 ¸³ÓèÖ´ÐÐȨÏÞ È·±£½Å±¾¾ßÓÐÖ´ÐÐȨÏÞ£º chmod +x /path/to/your/script.sh 3.4 ÖØÆôudev·þÎñ ΪÁËʹеÄudev¹æÔòÉúЧ£¬ÐèÒªÖØÆôudev·þÎñ»òÖØÐ¼ÓÔØ¹æÔò£º sudo udevadm control --reload-rules sudo udevadm trigger ËÄ¡¢¸ß¼¶Ó¦ÓÃÓëÓÅ»¯ ÔÚ»ù±¾ÊµÏÖUSBÉ豸¼àÌýºÍÏìÓ¦µÄ»ù´¡ÉÏ£¬¿ÉÒÔ½øÒ»²½Ì½Ë÷¸ß¼¶Ó¦ÓúÍÓÅ»¯²ßÂÔ
- ȨÏÞ¹ÜÀí£ºÍ¨¹ýudev¹æÔòÉèÖÃÌØ¶¨É豸µÄȨÏÞ£¬È·±£Ö»ÓÐÊÚȨÓû§Äܹ»·ÃÎÊÃô¸ÐUSBÉ豸
- É豸·ÖÀà´¦Àí£º¸ù¾ÝÉ豸ÀàÐÍ£¨Èç´æ´¢É豸¡¢¼üÅÌ¡¢ÉãÏñÍ·µÈ£©±àд²»Í¬µÄ´¦ÀíÂß¼£¬ÊµÏÖ¸ü¾«Ï¸»¯µÄ¹ÜÀí
- ÈÕÖ¾Óë¼à¿Ø£ºÔöÇ¿ÈÕÖ¾¼Ç¼¹¦ÄÜ£¬Ê¹ÓÃsyslog»òרÃŵÄÈÕÖ¾¹ÜÀíϵͳÊÕ¼¯ºÍ·ÖÎöUSBÉ豸²å°Îʼþ£¬±ãÓÚÉó¼ÆºÍ¹ÊÕÏÅŲé
- ¼¯³É×Ô¶¯»¯¹¤¾ß£º½«USB¼àÌýÓëCI/CDÁ÷³Ì¡¢×Ô¶¯»¯²âÊÔ¿ò¼ÜµÈ¼¯³É£¬Ìá¸ß¿ª·¢Ð§ÂÊ
Îå¡¢½áÓï ÔÚLinux»·¾³Ï¼àÌýUSBÉ豸²åÈë²¢¹¹½¨ÊµÊ±ÏìӦϵͳ£¬²»½öÓÐÖúÓÚÌáÉýϵͳ¹ÜÀíµÄ×Ô¶¯»¯Ë®Æ½£¬»¹ÄÜÓÐЧ±£ÕÏÊý¾Ý°²È«£¬Ìá¸ß¹¤×÷ЧÂÊ
ͨ¹ý×ÛºÏÔËÓÃudev»úÖÆ¡¢Óû§¿Õ¼ä¹¤¾ßÒÔ¼°×Ô¶¨Òå½Å±¾£¬¿ÉÒÔÁé»îʵÏÖUSBÉ豸µÄ¼à¿Ø