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进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…...
新手避坑指南:用Boson NetSim 11模拟多子网互联,从连线到ping通的全流程复盘
新手避坑指南:用Boson NetSim 11模拟多子网互联,从连线到ping通的全流程复盘 第一次打开Boson NetSim 11时,那种兴奋和忐忑交织的感觉至今难忘。作为网络工程初学者,我们往往怀揣着教科书上的理论知识,却在第一次实操时…...
面试-Linear Attention的学习
Linear Attention 学习笔记 0. Linear Attention 的目的与背景 0.1 标准 Attention 的瓶颈 在 Transformer 的标准 Self-Attention 机制中,注意力分数的计算方式如下: Attention(Q,K,V)=softmax(QKTd)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqr…...
OpenClaw本地知识库构建:Qwen2.5-VL-7B处理扫描版PDF与图片资料
OpenClaw本地知识库构建:Qwen2.5-VL-7B处理扫描版PDF与图片资料 1. 为什么选择OpenClaw搭建个人知识管理系统 去年搬家时,我翻出了三大箱纸质资料——从学生时代的课堂笔记到工作后的技术手册,全都堆在角落积灰。这些资料里藏着不少珍贵内容…...
AI 编程上下文管理新范式(非常详细),Spec 机制从入门到精通,收藏这一篇就够了!
最近围绕 Spec 的讨论明显变多。比较有代表性的声音大致有两类:一类更关注 Spec 和代码之间的边界,另一类更关注 Spec 在真实项目协作中的工程价值。这两类观察并不冲突,放在一起看,刚好能把问题看得更完整。 本质上都在回答同一…...
毕业论文答辩利器:AI驱动的10款高效工具及模板深度评测
工具对比速览表 工具名称 核心功能 适用场景 特色优势 Aibiye 智能成文、文献查找、数据分析 社科/金融/理工类论文 融合多模型架构,精准把握高校规范 Aicheck 初稿生成、大纲定制、图表插入 快速完成初稿需求 全学科覆盖,20-30分钟极速生成 …...
【技术干货】Qwen 3.6 Plus 实战:用百万上下文打造“代理式”AI 编码工作流
摘要 本文从工程视角拆解 Qwen 3.6 Plus:百万 token 上下文、面向“代理式编码”的能力,以及闭源旗舰开源工具的组合策略。结合实际项目需求,给出如何通过 OpenAI 兼容 API接入该类模型,并构建仓库级代码助手的完整 Python 示例和…...
镜像是什么?怎么用?解决下载慢的终极指南
作为计算机小白,最头疼的事莫过于下载软件——明明点击了下载,速度却慢得像蜗牛,动辄几KB/s,下一个几百MB的软件要等大半天,甚至中途断开重新来;偶尔听大佬说“用国内镜像啊”,却一脸懵…...
游戏开发中的乒乓缓存实战:Unity双缓冲技术如何提升渲染性能
游戏开发中的乒乓缓存实战:Unity双缓冲技术如何提升渲染性能 在Unity游戏开发中,渲染性能优化一直是开发者关注的焦点。当画面复杂度和特效层级不断提升时,传统的单缓冲机制往往难以满足流畅渲染的需求,这时乒乓缓存(P…...
OpCore Simplify终极指南:30分钟完成黑苹果智能配置的完整解决方案
OpCore Simplify终极指南:30分钟完成黑苹果智能配置的完整解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 对于想要体验macOS系统…...
SR-MPLS BE vs TE实战选择:在华三设备上如何根据业务需求规划最优路径(含HCL实验拓扑)
SR-MPLS路径规划实战:华三设备业务驱动型网络设计指南 当企业网络承载的业务类型日益复杂,从普通的办公OA到关键视频会议、实时交易系统并存时,网络工程师面临的核心挑战在于:如何让网络基础设施智能适配不同业务的服务质量需求&a…...
