modem_hotplug 脚本解析

来源:互联网 发布:网络兼职诈骗案开庭 编辑:程序博客网 时间:2024/06/06 05:50

下面两个文件在3G上网卡插上后实现USB转串口模式

/etc >: cat mdev.conf 
sd[a-h]*[0-9]     0:0 0660        *(/usr/sbin/hotplug /media/usb)
sd[a-h]           0:0 0660        *(/usr/sbin/hotplug /media/usb)
ub[a-h]*[0-9]     0:0 0660        *(/usr/sbin/hotplug /media/usb)
ub[a-h]           0:0 0660        *(/usr/sbin/hotplug /media/usb)
mmcblk[0-9]p[0-9] 0:0 0660        @(/bin/mount /dev/$MDEV /media/mmc)
mmcblk[0-9]       0:0 0660        $(/bin/umount /media/mmc)
sg*[0-9]          0:0 0660        *(/usr/sbin/modem_hotplug > /logs/modem_hotplug_sg.log 2>&1)
ttyUSB[0-9]       0:0 0660        *(/usr/sbin/modem_hotplug > /logs/modem_hotplug_tty.log 2>&1)

/etc >: 

~ >: cat usr/sbin/modem_hotplug 

#!/bin/sh
# FILE: /apps/tools/tty_Symlic
# Copyright (C) 2013 GuoWenxue <guowenxue@gmail.com>
# This shell scripts used to auto create symbolic link(aliase device name /dev/ttyGSM*) 
# for all the USB serial converter device(/dev/ttyUSB*), called by /etc/mdev.conf


source /etc/profile 
DEVID_MF626_MODEM=19d2:0031
DEVID_MF626_CDROM=19d2:2000


MODEM_PREFIX=/dev/ttyGSM
LOCKFILE=/tmp/.symlic.lock


set -x




switch_cdrom_modem()
{
   USB_ID=`lsusb | awk -F "ID" '{print $2}'`
   for id in $USB_ID
   do 
      if [ $DEVID_MF626_CDROM == $id ] ; then
          usb_modeswitch -c /etc/ppp/zte_mf626.conf
      fi    
   done   
}


find_symlink_index()
{
   index=-1
   prefix=$1
   symlinks=`ls ${prefix}*`
   
   for i in $symlinks
   do 
      #i=`echo $i | awk -F $prefix '{print $2}'`
      i=${i##$prefix}
      if [ $i > $index ] ; then 
         index=$i 
      fi
   done   
   
   index=`expr $index + 1`
   return $index
}


create_symlic()                                                                       
{                                                                                      
   #Check if this /dev/ttyUSB? already linked then exist 
   ls -l ${MODEM_PREFIX}* | grep $MDEV && return; #插入USB转串口的设备时如果发现ID不对就会退出。
   
   set -x
   syspath=`echo $DEVPATH | awk -F "/" '{ printf("/sys/%s/%s/%s/%s/%s/%s", $2,$3,$4,$5,$6,$7); }'`#syspath=/sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
   echo "Check 3G USB Modem ID in $syspath "  
   devID=`cat ${syspath}/idVendor`:`cat ${syspath}/idProduct`                                  
   
   if [ $devID == $DEVID_MF626_MODEM ] ; then
      find_symlink_index ${MODEM_PREFIX}
      index=$?
      echo "Create symbolic link: ln -s $MDEV ${MODEM_PREFIX}${index}"
      ln -s $MDEV ${MODEM_PREFIX}${index}
   fi
}                                            
                                             
remove_symlic()                              
{                                                            
   symlic=`ls -l ${MODEM_PREFIX}* | grep $MDEV | awk '{print $9}'`
                                             
   if [ ! -z "$symlic" ] ; then                    
      echo "Remove $symlic -> $MDEV" 
      rm -f $symlic                                          
      rm -f /tmp/cdrom.log /tmp/tty.log
   fi                                                        
}  


{
  flock 300    #锁住该脚本
  
  case $ACTION in
      remove)
          if [ "${MDEV:0:6}" == "ttyUSB" ] ; then  
             remove_symlic
          fi   
          ;;
     
      add)
          if [ "${MDEV:0:2}" == "sg" ] ; then
              switch_cdrom_modem
              export > /tmp/cdrom.log
          elif [ "${MDEV:0:6}" == "ttyUSB" ] ; then 
              create_symlic
              export > /tmp/tty.log
          fi    
          ;;
  esac     
  
} 300<>$LOCKFILE


~ >: 

插上后会在logs、tmp目录下生成以下一些文件:

~ >: usb 1-1.1: new full speed USB device number 4 using s3c2410-ohci
usb 1-1.1: New USB device found, idVendor=19d2, idProduct=2000
usb 1-1.1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
usb 1-1.1: Product: ZTE CDMA Technologies MSM
usb 1-1.1: Manufacturer: ZTE,Incorporated
usb 1-1.1: SerialNumber: 1234567890ABCDEF
scsi1 : usb-storage 1-1.1:1.0
scsi 1:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2
scsi 1:0:0:0: Attached scsi generic sg0 type 5
usb 1-1.1: usbfs: process 1056 (usb_modeswitch) did not claim interface 0 before use
usb 1-1.1: USB disconnect, device number 4
usb 1-1.1: new full speed USB device number 5 using s3c2410-ohci
usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0031
usb 1-1.1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
usb 1-1.1: Product: ZTE CDMA Technologies MSM
usb 1-1.1: Manufacturer: ZTE,Incorporated
usb 1-1.1: SerialNumber: 1234567890ABCDEF
option 1-1.1:1.0: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
option 1-1.1:1.1: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
scsi2 : usb-storage 1-1.1:1.2
option 1-1.1:1.3: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
scsi 2:0:0:0: Direct-Access     ZTE      MMC Storage      2.31 PQ: 0 ANSI: 2
sd 2:0:0:0: Attached scsi generic sg0 type 0
sd 2:0:0:0: [sda] Attached SCSI removable disk


~ >: 
~ >: 
~ >: ls tmp/
cdrom.log     dropbear.pid  messages      syslogd.pid   utmp
crond.pid     logs          stat          tty.log
~ >: cat tmp/cdrom.log 
export ACTION='add'
export DEVNAME='sg0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/host1/target1:0:0/1:0:0:0/scsi_generic/sg0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='21'
export MDEV='sg0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='516'
export SUBSYSTEM='scsi_generic'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='sg0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.2/host2/target2:0:0/2:0:0:0/scsi_generic/sg0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='21'
export MDEV='sg0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='544'
export SUBSYSTEM='scsi_generic'
export USER='root'
export network_cfg_dir='/apps/etc/network'
~ >: cat tmp/tty.log 
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='528'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.1/ttyUSB1'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB1'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='531'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB1'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.1/ttyUSB1/tty/ttyUSB1'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB1'
export MINOR='1'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='532'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB2'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.3/ttyUSB2/tty/ttyUSB2'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB2'
export MINOR='2'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='538'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='529'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.3/ttyUSB2'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB2'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='537'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
~ >: cat sys/
block/     class/     devices/   fs/        module/
bus/       dev/       firmware/  kernel/    power/
~ >: cat logs/
modem_hotplug_sg.log   nat.log
modem_hotplug_tty.log  start_apps.log
~ >: cat logs/modem_hotplug_sg.log 
+ flock 300
+ [ sg == sg ]
+ switch_cdrom_modem
+ lsusb
+ awk -F ID {print $2}
+ USB_ID= 1d6b:0001
 05e3:0606
 19d2:0031
+ [ 19d2:2000 == 1d6b:0001 ]
+ [ 19d2:2000 == 05e3:0606 ]
+ [ 19d2:2000 == 19d2:0031 ]
+ export
~ >: cat logs/modem_hotplug_tty.log 
+ flock 300
+ [ tt == sg ]
+ [ ttyUSB == ttyUSB ]
+ create_symlic
+ ls -l /dev/ttyGSM0 /dev/ttyGSM1 /dev/ttyGSM2
+ grep ttyUSB2
lrwxrwxrwx    1 root     root             7 Apr 26 11:07 /dev/ttyGSM2 -> ttyUSB2
+ return
+ export
"/sys/%s/%s/%s/%s/%s/%s", $2,$3,$4,$5,$6,$7); }
+ syspath=/sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
+ echo Check 3G USB Modem ID in /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1 
Check 3G USB Modem ID in /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1 
+ cat /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/idVendor
+ cat /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/idProduct
+ devID=19d2:0031
+ [ 19d2:0031 == 19d2:0031 ]
+ find_symlink_index /dev/ttyGSM
+ index=-1
+ prefix=/dev/ttyGSM
+ ls /dev/ttyGSM0 /dev/ttyGSM1
+ symlinks=/dev/ttyGSM0
/dev/ttyGSM1
+ i=0
+ [ 0 ]
+ index=0
+ i=1
+ [ 1 ]
+ index=1
+ expr 1 + 1
+ index=2
+ return 2
+ index=2
+ echo Create symbolic link: ln -s ttyUSB2 /dev/ttyGSM2
Create symbolic link: ln -s ttyUSB2 /dev/ttyGSM2
+ ln -s ttyUSB2 /dev/ttyGSM2
+ export
~ >: 

原创粉丝点击