modem_hotplug 脚本解析

2024-01-20 09:58
文章标签 解析 脚本 modem hotplug

本文主要是介绍modem_hotplug 脚本解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面两个文件在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
~ >: 

这篇关于modem_hotplug 脚本解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625619

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装