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进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
