ppppp2-23
#!/bin/sh
USBFILE=/etc/ppp/usbdevices
LIST=/etc/ppp/diallist
function ec25_find_ttyname()
{
DEVNAME=$1
FLAG=0
USB_FIND_PATH=/sys/bus/usb/devices
for dir in $(ls $USB_FIND_PATH)
do
echo $(ls USBFINDPATH/USB_FIND_PATH/USBFINDPATH/dir) | grep ttyUSB > /dev/null 2>&1
if [ $? -eq 0 ];then #最后运行的命令的结束代码(返回值)
USBDEVID=echo $dir|awk -F"." '{print $1}'
FLAG=1
break;
fi
done
if [ FLAG−eq0];thenlogger"CannotfindttyUSBdevice."exit2fiUSBFINDPATH=/sys/bus/usb/devices/FLAG -eq 0 ]; then logger "Can not find ttyUSB device." exit 2 fi USB_FIND_PATH=/sys/bus/usb/devices/FLAG−eq0];thenlogger"CannotfindttyUSBdevice."exit2fiUSBFINDPATH=/sys/bus/usb/devices/USBDEVID.$DEVNAME
for filename in $(ls $USB_FIND_PATH)
do
echo $filename | grep tty > /dev/null 2>&1
if [ ?−eq0];thenecho/dev/? -eq 0 ];then echo /dev/?−eq0];thenecho/dev/filename
break
fi
done
}
function me909_find_ttyname()
{
DEVNAME=$1
USB_FIND_PATH=/sys/bus/usb/drivers/option
for dir in $(ls $USB_FIND_PATH)
do
bIfP=cat $USB_FIND_PATH/$dir/bInterfaceProtocol
if [ $bIfP = 01 ] || [ $bIfP = 10 ];then
for mname in $(ls USBFINDPATH/USB_FIND_PATH/USBFINDPATH/dir)
do
echo $mname | grep ttyUSB > /dev/null 2>&1
if [ $? -eq 0 ];then
if [ DEVNAME=modem];thenecho/dev/DEVNAME = modem ];then echo /dev/DEVNAME=modem];thenecho/dev/mname
break 2
fi
fi
done
elif [ $bIfP = 02 ] || [ $bIfP = 12 ];then
for pname in $(ls USBFINDPATH/USB_FIND_PATH/USBFINDPATH/dir)
do
echo $pname | grep ttyUSB > /dev/null 2>&1
if [ $? -eq 0 ];then
if [ DEVNAME=pcui];thenecho/dev/DEVNAME = pcui ];then echo /dev/DEVNAME=pcui];thenecho/dev/pname
break 2
fi
fi
done
fi
done
}
lsusb > $USBFILE
chmod 644 $USBFILE
#Create The Symbol Link from TTYUSB*
if [ ! -f $LIST ];then
logger “diallist is not exist!”
return 1
fi
while read line
do
USBID=echo $line|awk -F" " '{print $6}' #截取显示行的第六列
VID=echo $USBID|awk -F":" '{print $1}'
PID=echo $USBID|awk -F":" '{print $2}'
grep $VID $LIST|grep $PID > /dev/null 2>&1
if [ $? -eq 0 ];then
if [ $VID = 2c7c ] && [ $PID = 0125 ];then
echo Quectel EC20 found.
PORT_M=ec25_find_ttyname 3
PORT_A=ec25_find_ttyname 2
PORT_G=NULL
SCRIPT1=grep $VID $LIST|grep $PID|awk -F" " '{print $6}'
SCRIPT2=grep $VID $LIST|grep $PID|awk -F" " '{print $7}'
break
elif [ $VID = 2c7c ] && [ $PID = 6026 ];then
echo Quectel EC200T found.
PORT_M=ec25_find_ttyname 4
PORT_A=ec25_find_ttyname 3
PORT_G=NULL
SCRIPT1=grep $VID $LIST|grep $PID|awk -F" " '{print $6}'
SCRIPT2=grep $VID $LIST|grep $PID|awk -F" " '{print $7}'
break
elif [ $VID = 12d1 ] && [ $PID = 15c1 ];then
echo HUAWEI ME909 found.
PORT_M=me909_find_ttyname modem
PORT_A=me909_find_ttyname pcui
PORT_G=NULL
SCRIPT1=grep $VID $LIST|grep $PID|awk -F" " '{print $6}'
SCRIPT2=grep $VID $LIST|grep $PID|awk -F" " '{print $7}'
break
else
PORT_M=grep $VID $LIST|grep $PID|awk -F" " '{print $3}'
PORT_A=grep $VID $LIST|grep $PID|awk -F" " '{print $4}'
PORT_G=grep $VID $LIST|grep $PID|awk -F" " '{print $5}'
SCRIPT1=grep $VID $LIST|grep $PID|awk -F" " '{print $6}'
SCRIPT2=grep $VID $LIST|grep $PID|awk -F" " '{print $7}'
fi
#echo $PORT_M $PORT_A $PORT_G $SCRIPT1 $SCRIPT2
break
fi
done < USBFILEif[""="USBFILE if [ "" = "USBFILEif[""="PORT_M" ] || [ “” = “PORTA"]∣∣[""="PORT_A" ] || [ "" = "PORTA"]∣∣[""="PORT_G” ];then
logger “USB Dongle is not found! Use 3G/4G Board.”
rm -rf /dev/ttyUSB0_modem
rm -rf /dev/ttyUSB1_pcui
rm -rf /dev/ttyUSB2_gps
PPP_DEVICE=/dev/tty4ppp
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
else
logger “USB Dongle is found!”
ln -sf $PORT_M /dev/ttyUSB0_modem
ln -sf PORTA/dev/ttyUSB1pcuiif["NULL"!="PORT_A /dev/ttyUSB1_pcui if [ "NULL" != "PORTA/dev/ttyUSB1pcuiif["NULL"!="PORT_G" ];then
ln -sf $PORT_G /dev/ttyUSB2_gps
fi
if [ “#777” = "1"];thenDIALERSCRIPT=1" ];then DIALER_SCRIPT=1"];thenDIALERSCRIPT=SCRIPT2
else
DIALER_SCRIPT=$SCRIPT1
fi
PPP_DEVICE=/dev/ttyUSB0_modem
fi
#Parameter Initialize
if [ $# -eq 0 ];then
TELEPHONE=*99#
ACCESSPOINT=“CMNET”
else
TELEPHONE=$1
ACCESSPOINT=$2
ACCOUNT=$3 # The account name for logon (as in ‘George Burns’)
if [ $# -eq 4 ];then # $#是添加到Shell的参数个数
PASSWORD=$4 # The password for this account (and ‘Gracie Allen’)
else
read -s PASSWORD # read -s 选项能够使read命令中输入的数据不显示在监视器上
fi #else 语句结尾
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
fi
if [ -z $ACCOUNT ];then #-z长度为0
ACCOUNT=anonymous
fi
if [ -z $PASSWORD ];then
PASSWORD=anonymous
fi
PPP_BAUDE=115200
export TELEPHONE ACCOUNT PASSWORD ACCESSPOINT PPP_BAUDE
Initiate the connection
if [ -f /usr/sbin/pppd ] && [ -f /usr/sbin/pppctrl ] && [ -f /usr/local/lib/pppd/passwordfd.so ];then
/usr/sbin/pppctrl -d $PPP_DEVICE -s $DIALER_SCRIPT -n $ACCOUNT -p $PASSWORD
else
exec pppd $PPP_DEVICE $PPP_BAUDE nocrtscts
defaultroute connect $DIALER_SCRIPT
user $ACCOUNT password $PASSWORD name $ACCOUNT remotename dialout debug noipdefault usepeerdns nopersist
fi
相关文章:
ppppp2-23
#!/bin/sh USBFILE/etc/ppp/usbdevices LIST/etc/ppp/diallist function ec25_find_ttyname() { DEVNAME$1 FLAG0 USB_FIND_PATH/sys/bus/usb/devices for dir in $(ls $USB_FIND_PATH) do echo $(ls USBFINDPATH/USB_FIND_PATH/USBFINDPATH/dir) | grep ttyUSB > /dev…...
【GeoDjango框架解析——读取矢量数据写入postgis数据库】
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录…...
注意啦!如何通过广告吸引客户直接下单?
2023年跨境电商越来越突出,据业内相关人士称,在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度,因此各行各业都响应政策,在新政策落实之前致力于平台的转型升级,做新时代创新型的高质量发展,其实细…...
ThinkPHP ^6图片操作进阶
图片裁剪、缩略、水印不再是TP框架系统内置的功能,需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行: composer require topthink/think…...
深入理解JS作用域链与执行上下文
变量提升: 变量提升( hoisting )。 我可恨的 var 关键字: 你读完下面内容就会明白标题的含义,先来一段超级简单的代码: <script type"text/javascript">var str Hello JavaScript hoi…...
UnityEditor编辑器扩展代码实现Project搜索的实现功能和切换Component等
反射实现切换Gameobjecect-Comp之前介绍过Kinematic Character Controller这个插件这个插件很容易和另外一个插件混淆,两个作者头像比较相像,而且这个插件的作者不太喜欢露脸(他现在做Dot-CharacterControl去了),几乎网…...
SKAdNetwork:从0到1
一、什么是SKAdNetwork https://developer.apple.com/documentation/storekit/skadnetwork iOS14.5开始,获取IDFA需要用户确认授权才可,此时SKAdNetwork 正式回归。 SKAdNetwork 是苹果在2018年推出的一个更加保护用户隐私的归因框架,并与…...
Spring+MVC+MYbatis注解开发
Spring常见注解 注解一:Configuration 用在类上面,加上这个注解的类可以成为一个spring的xml配置文件,使用的是java代码的配置 注解二:ComponentScan 用在类上,加上注解可以指定扫描路径 注解三:创建对…...
Redis主从复制过程
将目前服务器加入到端口号为6379的从服务器 一主二仆 当期中一台从服务器宕机之后 从服务器重启之后会变成单独的主服务器,与之前的主从复制没有关系,重新使用slaceof命令才能恢复到之前一样 主服务器宕机后,从服务器不会成为主服务器&…...
Spring boot开启定时任务的三种方式(内含源代码+sql文件)
Spring boot开启定时任务的三种方式(内含源代码sql文件) 源代码sql文件下载链接地址:https://download.csdn.net/download/weixin_46411355/87486580 目录Spring boot开启定时任务的三种方式(内含源代码sql文件)源代码…...
Tekton实战案例--S2I
案例环境说明 示例项目: 代码仓库:https://gitee.com/mageedu/spring-boot-helloWorld.git 构建工具maven pipeline各Task git-clone:克隆项目的源代码 build-to-package: 代码测试,构建和打包 generate-build-id:生…...
四、使用类实现功能
使用类实现功能 ts中类的继承 ES6中class类中,属性分为:实例上的属性,原型上的方法;也可以叫做:class的属性,class的方法。 类的继承叫法:父类>子类,基类>派生类;…...
Java多线程不安全的例子
目录 1. 可见性不安全例子 2. 原子性不安全例子 3. 有序性不安全例子 1. 可见性不安全例子 可见性:一个线程对共享变量的修改,另外一个线程不能够立刻看到。 如果多线程对共享数据进行访问而不采取同步操作的话,那么操作的结果是不一致…...
vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
据多个平台消息,vivo即将推出小折叠屏手机X Flip。据了解,vivo X Flip将采用轻盈便携的竖向折叠布局,以及非常受女性消费者喜爱的结构设计。那么,vivo X Flip会是vivo折叠屏的又一个爆款吗? 一、vivo X Flip小折叠屏手…...
MySQL中MVCC如何解决不可重复读以及幻读?
了解MVCC之前,我们首先需要了解以下两个概念:一致性非锁定读和锁定读,了解这两个概念之后我们在逐步分析MVCC。 一致性非锁定读和锁定读 一致性非锁定读(快照读) 对于 一致性非锁定读的实现,通常做法是加一个版本号或者时间戳字…...
设计模式第八讲:观察者模式和中介者模式详解
一. 观察者模式 1. 背景 在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有&…...
关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)1. 配置域名的方式1.1 sudo vim /etc/hosts1.2 浏览器插件 LiveHosts2. 问题描述3. 解决问题方法3.1 尝试方法1—确保代理都关闭3.2 尝试方法2—确保域名能p…...
【代码随想录二刷】Day23-二叉树-C++
代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言:C 669. 修剪二叉搜索树 链接:https://leetcode.cn/problems/trim-a-binary-search-tree/ 递归 class Solution { public:Tree…...
Linux GPIO 开发指南
文章目录Linux GPIO 开发指南1 概述1.1 编写目的1.2 适用范围1.3 相关人员2 模块介绍2.1 模块功能介绍2.2 相关术语介绍2.3 总体框架2.4 state/pinmux/pinconfig2.5 源码结构介绍3 模块配置3.1 kernel menuconfig 配置3.2 device tree 源码结构和路径3.2.1 device tree 对 gpio…...
记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大
记一次后端生成Zip文件问题前言问题出现排查一、流没有关好二、写入了空白字节三、没有flush定位环节一、生成二、通过SwaggerUI、PostMan进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
