当前位置: 首页 > news >正文

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/FLAGeq0];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/USBF​INDP​ATH/dir) | grep ttyUSB > /dev…...

【GeoDjango框架解析——读取矢量数据写入postgis数据库】

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 geodjango框架解析之读取矢量数据shp文件写入postgis数据库 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录…...

注意啦!如何通过广告吸引客户直接下单?

2023年跨境电商越来越突出&#xff0c;据业内相关人士称&#xff0c;在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度&#xff0c;因此各行各业都响应政策&#xff0c;在新政策落实之前致力于平台的转型升级&#xff0c;做新时代创新型的高质量发展&#xff0c;其实细…...

ThinkPHP ^6图片操作进阶

图片裁剪、缩略、水印不再是TP框架系统内置的功能&#xff0c;需要安装。 目录 安装 图片处理 1.创建图片对象 2.获取图片属性 3.裁剪图像 4.生成缩略图 6.保存图像 7.水印 安装 使用composer在项目根目录打开命令行执行&#xff1a; composer require topthink/think…...

深入理解JS作用域链与执行上下文

变量提升&#xff1a; 变量提升&#xff08; hoisting &#xff09;。 我可恨的 var 关键字&#xff1a; 你读完下面内容就会明白标题的含义&#xff0c;先来一段超级简单的代码&#xff1a; <script type"text/javascript">var str Hello JavaScript hoi…...

UnityEditor编辑器扩展代码实现Project搜索的实现功能和切换Component等

反射实现切换Gameobjecect-Comp之前介绍过Kinematic Character Controller这个插件这个插件很容易和另外一个插件混淆&#xff0c;两个作者头像比较相像&#xff0c;而且这个插件的作者不太喜欢露脸&#xff08;他现在做Dot-CharacterControl去了&#xff09;&#xff0c;几乎网…...

SKAdNetwork:从0到1

一、什么是SKAdNetwork https://developer.apple.com/documentation/storekit/skadnetwork iOS14.5开始&#xff0c;获取IDFA需要用户确认授权才可&#xff0c;此时SKAdNetwork 正式回归。 SKAdNetwork 是苹果在2018年推出的一个更加保护用户隐私的归因框架&#xff0c;并与…...

Spring+MVC+MYbatis注解开发

Spring常见注解 注解一&#xff1a;Configuration 用在类上面&#xff0c;加上这个注解的类可以成为一个spring的xml配置文件&#xff0c;使用的是java代码的配置 注解二&#xff1a;ComponentScan 用在类上&#xff0c;加上注解可以指定扫描路径 注解三&#xff1a;创建对…...

Redis主从复制过程

将目前服务器加入到端口号为6379的从服务器 一主二仆 当期中一台从服务器宕机之后 从服务器重启之后会变成单独的主服务器&#xff0c;与之前的主从复制没有关系&#xff0c;重新使用slaceof命令才能恢复到之前一样 主服务器宕机后&#xff0c;从服务器不会成为主服务器&…...

Spring boot开启定时任务的三种方式(内含源代码+sql文件)

Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09; 源代码sql文件下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87486580 目录Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09;源代码…...

Tekton实战案例--S2I

案例环境说明 示例项目&#xff1a; 代码仓库&#xff1a;https://gitee.com/mageedu/spring-boot-helloWorld.git 构建工具maven pipeline各Task git-clone&#xff1a;克隆项目的源代码 build-to-package: 代码测试&#xff0c;构建和打包 generate-build-id&#xff1a;生…...

四、使用类实现功能

使用类实现功能 ts中类的继承 ES6中class类中&#xff0c;属性分为&#xff1a;实例上的属性&#xff0c;原型上的方法&#xff1b;也可以叫做&#xff1a;class的属性&#xff0c;class的方法。 类的继承叫法&#xff1a;父类>子类&#xff0c;基类>派生类&#xff1b…...

Java多线程不安全的例子

目录 1. 可见性不安全例子 2. 原子性不安全例子 3. 有序性不安全例子 1. 可见性不安全例子 可见性&#xff1a;一个线程对共享变量的修改&#xff0c;另外一个线程不能够立刻看到。 如果多线程对共享数据进行访问而不采取同步操作的话&#xff0c;那么操作的结果是不一致…...

vivo X Flip会是高端手机市场的又一折叠屏爆款吗?

据多个平台消息&#xff0c;vivo即将推出小折叠屏手机X Flip。据了解&#xff0c;vivo X Flip将采用轻盈便携的竖向折叠布局&#xff0c;以及非常受女性消费者喜爱的结构设计。那么&#xff0c;vivo X Flip会是vivo折叠屏的又一个爆款吗&#xff1f; 一、vivo X Flip小折叠屏手…...

MySQL中MVCC如何解决不可重复读以及幻读?

了解MVCC之前&#xff0c;我们首先需要了解以下两个概念&#xff1a;一致性非锁定读和锁定读&#xff0c;了解这两个概念之后我们在逐步分析MVCC。 一致性非锁定读和锁定读 一致性非锁定读(快照读) 对于 一致性非锁定读的实现&#xff0c;通常做法是加一个版本号或者时间戳字…...

设计模式第八讲:观察者模式和中介者模式详解

一. 观察者模式 1. 背景 在现实世界中&#xff0c;许多对象并不是独立存在的&#xff0c;其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如&#xff0c;某种商品的物价上涨时会导致部分商家高兴&#xff0c;而消费者伤心&#xff1b;还有&…...

关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)

关于 mac 本地配置域名能 ping 通&#xff0c;但是浏览器不能访问的问题&#xff08;而其他电脑操作可访问&#xff09;1. 配置域名的方式1.1 sudo vim /etc/hosts1.2 浏览器插件 LiveHosts2. 问题描述3. 解决问题方法3.1 尝试方法1—确保代理都关闭3.2 尝试方法2—确保域名能p…...

【代码随想录二刷】Day23-二叉树-C++

代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言&#xff1a;C 669. 修剪二叉搜索树 链接&#xff1a;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进行下载三、结论解决方法前言 在项目上线前夕&#xff0c;临时添加了个数据导出的接口&#xff0c;需求是导出压缩包&#xff0c;选择了项…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...