欢迎光临
我们一直在努力

未分类

移动云电脑研究(一)开启嵌套虚拟化

xikuqi阅读(1264)

一 我现在已知云电脑有三个版本,
1.用手机号开通的家庭版
2.咸鱼上的那种是买终端免费送的版本
3.用自己移动云账号购买的云电脑

二,自己移动云购买的云电脑可以开通嵌套虚拟化,点击重启电脑不会断开连接,可以看到云电脑关机启动的全部过程。

[img=1818,978]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-223520.png[/img]
[img]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-223611.png[/img]
[img=1810,827]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-075107.png[/img]

咸鱼上面买的那种不支持嵌套虚拟化,点击重启后会直接断开连接,不能看到关机再开机的过程

三,官网购买过程
自己购买的可以选择离自己近的区域,可以云电脑组网。

[img=1917,921]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074258.png[/img]
[img=966,686]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074410.png[/img]
[img=1217,234]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074440.png[/img]
[img=1412,212]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074451.png[/img]
[img]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074732.png[/img]
[img]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074940.png[/img]
[img=582,110]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-074951.png[/img]
[img=1810,827]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-075107.png[/img]

[img=1818,978]https://95gk.com/wp-content/uploads/2023/11/屏幕截图-2023-11-04-223520.png[/img]

四 总结,自己买的虽然贵,但是可玩性高,可以虚拟化小鸡生小鸡
咸鱼买的不支持嵌套虚拟化,并且不安全,管理员不在自己手里

测试机器有限,如有不对,欢迎指正

AOSP安卓操作系统源码下载

xikuqi阅读(308)

1.安装git

sudo apt-get upgrade

sudo apt-get install git

git config –global user.email “xxxxxxx@gmail.com”

git config –global user.name “xxxxx”

 

2.安装repo

apt-get install openssl libssl-dev curl -y
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL ‘https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT’ |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

3.拉取代码

创建工作目录

mkdir -p /root/aosp

cd /root/aosp

repo init -u https://android.googlesource.com/platform/manifest

repo sync

国内源

#repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest

某个特定的 Android 版本

repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.6_r1

android-2.3.6_r1    android-4.0.4_r2.1      android-13.0.0_r41  android-12.1.0_r26  android-security-11.0.0_r66  android-security-10.0.0_r75

 

随身wifi CPE 启用卡槽去除后门 SEL816M 版号 SP976-V2

xikuqi阅读(1109)

很多网友都私信我前面发的那块支持5频段的随身wifi的购买链接,怎么去后面,怎么切换实体SIm卡。

 

我是从拼多多购买的50块左右,大家可以通过搜索下面外观图找到,具体调整配置为高通510,512兆内存,4gb存储,里面三天线,支持5GWiFi,网速可以媲美中兴微,感觉不错

 

下面为切卡具体步骤

1.拆出主板,短接usb口最外面两个触点,连接电脑就进入了9008

2.使用miko备份分区。点击qualcomm/partition/scan/DO job/backup all/backup /do job

3.切换sim;分别在cache分区,system分区搜索esimswitch文件把里面的0改成1及使用实体sim卡;搜寻sim_management.conf文件打开可以看到切卡密码

4,去后门,打开system分区里面搜索cloud_management.conf文件,把里面的后台网站改成其他的就可以去后门了

 

 

3.把更改会写入分区,使用DiskGeniusEng,点击磁盘,点击打开虚拟磁盘文件,选择system分区和cache分区,点击浏览文件,然后把你更改的文件放入覆盖,全部替换好后退出

4.使用miko把分区杀回设备,点击qualcomm/partition/scan/DO job/选择要写回的分区/write/do job

联通5G CPE 华盛VN007+获取superadmin密码并设置短信功能

xikuqi阅读(4547)

 

一、背景

联通5G CPE买来只有admin的普通用户,普通用户权限低只能做一些基本的配置,而VN007+ 5G CPE路由器目前有特权用户admin和superadmin用户,我们通过获取superadmin用户可以获得更好的权限和更多的功能,比如锁频率、锁基站、锁小区、添加更多的SSID、WIFI黑名单、设置多WAN(移动数据+有线)、VXLAN、VLAN、SNMP、MESH、防火墙访问控制、AT命令等等,我就不一一举例了,通过这些配置可以实现更多的玩法。

 

二、工具下载

本站下载链接

VN007+版本固件:最新的升级固件,低版本1.10.2提供降级(高版本修复了adb免密登录);
POSTtiaoshigj.zip:发送post请求;
Minimal_ADB_Fastboot.exe:adb客户端,连接设备shell;

三、修改超级管理员密码

1、开启ADB(可以先跳过这步,有可能你的机器已经开启了ADB)

如果你直接可以通过第二步登录,则本步骤则不需要,可以通过telnet 192.168.0.1 5555测试端口是否开启。

1.1通过admin用户登录设备,按F12打开浏览器调试模式,点击Network-选择任意http.cgi-点击paload-复制sessionId,并记录下来,如下图:

1.2打开POSTtiaoshigj软件,填好信息如下图;,点击开始访问,会出现返回内容success。

提交地址:http://192.168.0.1/cgi-bin/http.cgi
提交数据:{"adbSwitch":"1","cmd":237,"method":"POST","language":"CN","sessionId":"修改成你自己sessionId"}
我这里的示例:
{"adbSwitch":"1","cmd":237,"method":"POST","language":"CN","sessionId":"2a3112af0d59ef5b713aeeb97d0aaafa0f97940234a955a2426e01bd01305f8d"}

#返回{"success":true,"cmd":237,"message":""}代表开启成功

1.3上面开启成功后,登录adb修改superadmin密码,安装Minimal_ADB_Fastboot.exe,打开软件调用命令窗口。

1.4通过如下命令设置superadmin用户密码

adb connect 192.168.0.1:5555
adb shell
#如果你在这里,提示输入用户名密码,或无权限,则通过上面我发布版本进行降级到1.10.17在继续操作。
mdlcfg -f SYS_WEB_SUPER_PWD_RULE="1"
mdlcfg -a SYS_WEB_SUPER_PWD_RULE="1"
mdlcfg -f SYS_SUPER_LOGIN_PWD="你要设置的密码"
mdlcfg -a SYS_SUPER_LOGIN_PWD="你要设置的密码"
mdlcfg -c

#查询root密码
cat /tmp/mdlcfg.sysconfig | grep SYS_SENIOR_LOGIN_PWD

到这里你就可以通过superadmin用户登录了!

四、调试开启5G短信功能

1、通过superadmin登录WEB界面,找到设备配置-语音配置-设置为VoLTE然后点击保存;

正常联通卡可以直接注册成功,如果你是电信卡的话1.12.11.1版本有个BUG,需要你重启一下APN,重新搜网才可以正常注册,两个APN,选择另一个APN如Auto点保存,过一会就可以看到显示已注册。

重新注册APN

五、设置IMEI串号

使用superadmin登录WEB界面,找到系统设置-AT接口-发送下面命令设置


AT+SPIMEI?

# 查询当前IMEI串号
AT+SPIMEI=0,"XXXXXXXXXXXXXXX"
#修改15位IMEI串号,提示成功后重启设备。

六、VN007和VN007+散热器(插播广告)

因为VN007设备发热比较严重,CPU温度高了就会导致CPU进入节能模式,降频,降频后造成连接不稳定,断流等等,为了解决这个问题设计了PWM调速散热风扇,效果明显,有需要的话可以扫描右上角微信,加我好友,80元包邮。下面是效果图:

背面

UFI 系列 4G WiFi 棒研究记录

xikuqi阅读(4098)

UFI 系列 4G WiFi 棒研究记录

创建于2022-07-14

2022年8月12日更新

预计阅读16分钟


记录一下 UFI 系列 4G WiFi 棒的研究记录

 

总述

现在市面上有一种 WiFi 棒,只需要十几块二十几块就能买得到,商家宣传月享1000G流量,但是你绝对想不到这玩意跑的很有可能是 Android 系统,那么可玩性就很多了。

本文基本上是这种棒子的所有玩法集合了,收集不易,若您觉得还行请多多推广;同时感谢酷安社区随身WiFi话题下各位大神的研究。

一些需要注意的事

  • 请在完整阅读本文后再进行操作;
  • 具体章节请查阅右侧目录;
  • 操作过程中请关闭所有安全软件
  • 本文操作在 Windows 10 Pro 21H2 版本中通过测试,推荐 Windows 8 及以上版本操作系统;
  • 建议提前准备好散热措施或在较为凉爽的地方操作;
  • 有问题可以在评论区提出,不定时回复;
  • 在本教程中使用的工具请不要在不明确功能的前提下对任何设备随便使用其他功能,可能造成硬件损坏;
  • 本文除“中兴微”章节外的任何内容和操作均不适用于中兴微芯片的设备;
  • 一般来说除非你不准备用自己的卡,否则无需激活其内置的ESIM(自带的流量套餐);
  • 本文部分图片采用了Webp格式,如果无法看到部分图片请先升级到最新版浏览器;
  • 如果您之前打开过本页面建议强制刷新(Ctrl+F5)一下以免因缓存问题导致您看不到更新的内容;
  • 对于因本文操作产生的硬件损坏或其他损失本文作者不负任何责任。

如何分辨硬件类型

拆机。

注意:拆开之后商家有权拒绝售后服务,请谨慎操作。

拆下全部屏蔽罩,查找最大的一块芯片,看芯片上方丝印,一般来说会有以下几种情况:

  • QUALCOMM MSM8916:高通410,也是玩法最多的;
  • QUALCOMM MSM8909:高通210,玩法仅次于410;
  • ZXIC:中兴微,几乎没有什么玩法,一些早期版本可以开启adb全量备份和刷入免流;
  • 其他丝印:可能是Mediatek(联发科),一般没什么玩法,其他的方案就更没见过了。

都有什么玩法

刷其他版本的 Android 系统解锁 Magisk (Root)、免流;刷 OpenWRT 获得更高级的网络功能(穿墙、去广告等);刷 Debian 变身 Linux 开发板等等。

硬件配置

一般来说 UFI 系列的 4G WiFi 棒都是如下配置:

项目 配置
SoC(处理器) Qualcomm Snapdragon MSM8916(骁龙410)
Cortex-A53 × 4 @ 0.9GHZ
RAM 512MB
ROM 2G、4G、8G
板号 UFI001B/C、UFI003、QRZL903-1 等

使用相同芯片的手机有红米 2 、红米 Note LTE 4G 增强版等。

前期准备工作

检查硬件

收到货之后第一时间确保硬件完好,防止收到货就是坏的。

  1. 检查产品本身是否有明显损坏、拆卸和维修痕迹;
  2. 直接插上电脑查看是否能够正常进入后台以及机身指示灯是否正常;
  3. 插入电脑查看是否能用adb连接到棒子(adb devices是否有正确返回);
  4. 拆开WiFi棒外壳查看是否有卡槽,卡槽是否能够正常插卡;
  5. 断电后插入自己的SIM卡,重新上电查看是否能够正常使用;
  6. 使用自己的设备连接棒子查看WiFi是否正常。

准备

你需要提前拥有的硬件配置:

  • 一台电脑最好是笔记本(防止断电)和至少2个usb接口;
  • 比较良好的网络;
  • 一张电信或联通可上网并且流量较多的SIM卡;

无论如何你都需要准备的工具:

  • ADB和驱动:用于连接棒子;
  • MiKo Pro:用于备份和救砖;
  • Qualcomm Premium Tool:用于备份和提取分区;
  • 星海SVIP:备份基带;
  • ARDC:用于连接到棒子的图形化界面;
  • 搞机工具箱(晨钟酱):用于快速切换启动模式和其他调试功能,如果Adb用的比较熟练可以不需要。

你可能需要准备的:

  • 先机刷机V1.3脚本(水遍一键):用于刷写System分区以及获取Root权限(Magisk);
  • 随身WiFi助手(水遍工具箱);
  • OpenWRT刷机文件;
  • Debian刷机文件。

建议准备的:

  • (路由器CPU用)散热片和小风扇:防止棒子过热;
  • 热风枪、高温胶带或隔热板、高温垫板:方便拆除esim芯片;
  • USB 公对母 Hub:可以把单usb转出来多个usb接口。

下载地址

安装驱动

以前装过驱动的可以跳过。
安装驱动时需要断开所有Android设备(包括棒子和手机等)。

下载MiFlash,在第一屏会跳“驱动安装”(若没有跳出驱动安装界面则点击一下菜单栏上的“Driver”即可),安装MiFlash提供的所有驱动后关闭MiFlash。

下载9008驱动,直接安装即可。

小米ADB驱动无法识别棒子的问题

如果只安装了MiFlash的驱动(即小米的ADB驱动)无法自动识别WiFi棒(显示为名称为Android的“未知设备”),则可以按照如下操作给棒子使用小米的ADB驱动:

右键名称为Android的“未知设备”,点击“更新驱动程序”,“手动查找并安装”,“从列表中选择”,选择Android Phone(这一步如果没有就是MiFlash的驱动没有安装成功),选择第一个Android ADB Interface即可。

公有操作和名词概念

9008

9008模式是高通芯片的底层烧录模式,在该模式下计算机绕过其他硬件直接烧写闪存,可用于救砖和工厂量产。

棒子进入9008的方式为断电拆开棒子后里面一般有且只有一个按钮,按住这个按钮并同时连接到电脑,此时查看设备管理器是否有Qualcomm HS-USB QDLoader 9008,棒子在此时应该进入了9008模式且无指示灯亮起或闪烁,此时可以连接电脑操作。

Fastboot

Fastboot 模式是 Android 手机常用的刷机模式(线刷)。

棒子在Android操作系统内进入Fastboot的方式为在adb执行重启命令:

1
adb reboot bootloader

但是实测我的棒子这样是进不去Fastboot的,原因不明(应该是进去了但是马上就会引导系统),所以也可以使用晨钟酱的搞机工具箱一键进入:打开晨钟酱搞机工具箱,点击“线刷模式(Fastboot)”,然后棒子会自动重启,只有红灯常亮即进入成功。

切换 SIM 卡(切卡)

以 QRZL903-1 主板为例,默认系统下开机进入后台,在选择SIM卡的地方会显示有三张卡:SIM1/2/3。

切换 SIM 卡有些设备切换SIM卡需要密码,一般有以下几种可能:

  • UFIadmin88888
  • L100
  • az952#

备份与恢复

确认硬件完好后接下来需要做的就是备份,备份是重中之重,请一定要做备份,至少也要做全量备份。

这一节会完整讲解各部分如何备份和恢复,你可能不需要但是建议完整看完

MiKo备份

MiKo备份出来的是一个binary文件,其中包含整机的所有分区镜像,可用于救砖。

首先运行miko.exe安装Miko,安装完成后先不要运行,进入Miko安装目录,找到miko_service_tool_pro_v5.3_fix.exe,去掉后缀变成miko_service_tool_pro_v5.3_fix,然后将Loader.exe复制到MiKo安装目录,最后运行Loader即可启动Miko。

将棒子进入9008模式后按照下图操作生成备份,备份时间可能较长。

读取完成后复制到安全的位置保存即可,如果读取不到分区表请检查驱动是否装好、接触是否良好、机身是否没有指示灯闪烁。

MiKo恢复

打开MiKo,将棒子置于9008模式,并按下图操作恢复:

QPT 备份

Qualcomm Premium Tool 备份出来的是所有分区的小镜像,也用于提取部分分区。

首先关闭电脑声音,打开注册机文件夹中的注册机.exe,点击主界面中的Generate Key,在跳出的另存为界面中将.key文件随便保存到哪,然后退出注册机。

打开QualcommPremiumTool.exe,在主界面中点击HelpActivate,导入刚才导出的Key文件即可。

将棒子进入9008模式,按照下图操作生成备份,备份时间可能较长。

读取完成后复制到安全的位置保存即可,如果读取不到分区表请检查驱动是否装好、接触是否良好、机身是否没有指示灯闪烁。

星海SVIP

星海SVIP用于备份QCN(基带),需要在Root下进行。

直接将棒子连接到电脑,按照下图生成QCN备份文件。

安装散热和拆除ESIM

注意】:这一步建议有动手能力且有基础工具(热风枪、电烙铁、热熔胶枪、高温垫板、隔热胶带等)的用户操作,操作不当可能导致硬件损坏乃至人身伤害!无论如何请谨记安全第一

本节操作作者本人也没有实际操作,所涉及步骤均为本人经验和酷安相关帖子而来。如果你一开始是能够上网的(能够正常切卡、读卡和上网)则不建议拆除ESIM卡。

拆除ESIM

ESIM芯片的样式通常是一个黑色的芯片,表面丝印为20位的ICCID,其编码格式为:XXXXX XXXXX XXXXX XXXXX。国内前六位运营商代码:中国移动:898600、898602、898604、898607 ,中国联通:898601、898606、898609,中国电信898603、898611。

一般来说首先使用隔热胶带(高温胶带)先覆盖住除了Esim芯片的其他位置然后使用热风枪吹下来即可。

也有酷安大神直接用平头螺丝刀直接撬下来的,一般来说只要不会伤到其他元件就可以。

安装散热

散热片粘在SoC的区域上面的屏蔽罩上就可以,然后用风扇对着吹。

USB接口的两侧是电源线(P+/P-),中间是数据线(D+/D-),接线的时候注意一下正负极就可以,另外建议在风扇和USB接口中间加一个二极管防止短路。

Debian/OpenWRT

感谢来自HandsomeMod大佬开发的项目HandsomeMod以及酷安@苏苏小亮亮编译的固件,使得UFI系列410主板可以使用OpenWRT和Debian。

由于此类设备不同厂商、不同板型较为复杂,刷机包中自带的基带文件可能并不能用于你手中的棒子,刷入Debian或OpenWRT的大概流程是先提取替换基带,然后直接执行脚本即可。

因为刷入Debian和刷入OpenWRT是一样的操作,本质上底层实现逻辑也较为相似,因此就写在一起啦。

注意:因为 Debian 和 OpenWRT 不比机身自带的原版 Android 的调教适配,因此可能会出现棒子过热降频、速率降低、WiFi信号减弱乃至SoC烧毁的现象,因此建议在凉爽的空间内操作或提前准备好散热措施(风扇、散热片等)。

提取基带

首先在Android系统下(不要在已经刷好的OpenWrt下直接提取基带,那样提取了也没用)插入你的SIM卡,(可能需要切换到SIM卡1)确认能够上网之后断电取下SIM卡再上电备份。如果Android系统下就无法上网则备份出来也是没有用的,建议先刷一遍全量救砖包(MiKo备份的出厂包)或换一个运营商的SIM卡甚至退货处理。

确认基带可用后,将棒子进入9008模式联机,打开Qualcomm Premium Tool,按照下图操作将modemst1modemst1fscfsg四个分区单独备份到一个文件夹中,一次只能备份一个,需要循环上述备份操作直至四个分区全部备份完成。

此时进入备份文件夹,找到这四个文件,将后缀名全都改为.bin,然后全部拖进之前准备好的OpenWRT文件夹或Debian文件夹中替换掉原来的文件即可。

刷写

棒子断电后正常上电联机,打开晨钟酱搞机工具箱,点击“线刷模式(Fastboot)”,随后运行OpenWRT文件夹或Debian文件夹中的flash.bat即可。

刷入基带

如果 OpenWRT 开机后显示“正在拆卸调制解调器载体”或“网络设备不存在”则再执行此步操作。在Debian或OpenWRT下重刷基带不是必须的,本节只是类似问题的备用解决方案。

将前面提取的基带文件(4个,分别是modemst1.binmodemst1.binfsc.binfsg.bin)与OpenWRT/Debian刷机包文件夹下的复制到一个新的文件夹内,然后在该文件夹空白处按住Shift+右键,选择“在此处打开PowerShell窗口”或“在此处打开命令提示符”。

然后将棒子重启至Fastboot连接至电脑,在命令提示符或PowerShell中依次输入如下命令即可:

1
2
3
4
5
6
fastboot flash fsc fsc.bin
fastboot flash fsg fsg.bin
fastboot flash modemst1 modemst1.bin
fastboot flash modemst2 modemst2.bin

fastboot reboot

OpenWRT换源

这里以清华源为例。

未换源状态下更新包时可能会显示404(它内置的源不知道为什么确实不存在,这里更换成了21.02.0版本的源,实测可以正常使用),换成其他的源即可。

修改方法为打开/etc/opkg/distfeeds.conf文件,备份并清空后填入如下内容保存即可。

1
2
3
4
5
6
7
src/gz handsomemod_core https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/targets/armvirt/64/packages
src/gz handsomemod_base https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_cortex-a53/base
src/gz handsomemod_luci https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_cortex-a53/luci
src/gz handsomemod_packages https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_cortex-a53/packages
src/gz handsomemod_routing https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_cortex-a53/routing
src/gz handsomemod_telephony https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/21.02.0/packages/aarch64_cortex-a53/telephony
src/gz openwrt_kiddin9 https://op.supes.top/packages/aarch64_cortex-a53

也可以通过控制台添加软件源,其中需要添加的内容和上面是一样的:

Debian换源

这里以清华源为例。

Debian下不换源不会产生什么问题,顶多是慢一点。

修改方法为先安装apt install apt-transport-https ca-certificates(实测苏苏小亮亮的包默认是已经安装好的),然后打开/etc/apt/sources.list文件备份并清空后填入以下内容保存即可。

1
2
3
4
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

问题

  • 刷完OpenWRT后没有网,luci显示“正在拆卸调制解调器载体”。
    • 基带备份错误或者没有刷进去自己的基带文件,刷一遍全量救砖包之后重复本节操作。
  • 刷完OpenWRT/Debian之后USB没网(USB共享不可用)。
    • 我也没有别问我
  • 安装软件提示404。
    • 换源。
  • 默认SSH IP和端口是什么,如何连接?
    • Debian的是ssh root@192.168.68.1,默认密码是1
    • OpenWRT默认没有密码,luci密码应该是password

Debian 安装桌面和 VNC

请见在无显示输出的情况下配置桌面和 VNC Server

USB共享不可用问题

这个方法源于OpenStick项目的帖子,但我这本地实测是无效的(驱动ID根本不识别),不过贴出来说不定其他人就能用呢是吧。

刷完Debian或OpenWRT之后如果能正确连接上WiFi并正常上网,但是usb连接电脑却无法通过usb共享上网,设备管理器中可以识别到Android ADB Interface,则可以尝试以下操作。

按照下图操作:

  1. 右键Android ADB Interface,选择属性;
  2. 点击驱动程序选项卡,更新驱动程序;
  3. 浏览我的电脑以查找驱动程序;
  4. 让我从计算机上的可用驱动程序列表中选择;
  5. 找到“网络适配器”;
  6. 左侧厂商找到“Microsoft”,右侧找到“基于远程NDIS的Internet共享设备”;
  7. 在跳出的警告对话框中选择“是”。

如果在第五步没有找到“基于远程NDIS的Internet共享设备”,则可以尝试先将ADB驱动全部卸载(请谨慎操作)使设备变为未知设备后再重试。

中兴微

这一节仅为简单介绍,本人的中兴微在到货之后发现无法开启adb就直接退掉了,因此部分可能会丢失一些细节,还请谅解。

中兴微芯片棒子的主要特征就是芯片丝印上有很明显的ZXIC字样,通常来说这种棒子跑的是轻量型Linux系统并非Android。

开启ADB

假设你棒子的后台地址为192.168.100.1,登录后台后在你的浏览器中新开一个窗口然后输入你的后台地址加以下地址尝试是否能够开启ADB。

1
2
/goform/goform_set_cmd_process?goformId=SET_DEVICE_MODE&debug_enable=1
/reqproc/proc_post?goformId=SET_DEVICE_MODE&debug_enable=1

如果某条地址执行后返回"result":"set_devicemode successfully"字样即为成功开启ADB。

改动记录

中间还有诸多小修改未记录。

时间 改动
2022-07-14 20:41:00 文章创建
2022-07-18 12:51:00 重写了 OpenWRT 和 Debian 刷机部分
2022-07-30 14:46:00 内容修正
2022-08-02 11:53:00 添加“切卡密码”内容
添加硬件识别方法
添加中兴微相关内容
2022-08-02 16:00:00 内容修正
2022-08-12 08:58:00 内容修正

windows2016 升级 2019 和 2022

xikuqi阅读(616)

Server2022 GVLK版:

VDYBN-27WPP-V4HQT-9VMD4-VMK7H – Standard 标准版(非图形界面和桌面体验)

WX4NM-KYWYW-QJJR4-XV3QB-6VM33 – Datacenter 数据中心版(非图形界面和桌面体验)

以管理员

Windows Server 2019批量授权版KMS客户端安装密钥Volume:GVLK

Windows Server 2019 Datacenter

[Key]:WMDGN-G9PQG-XVVXX-R3X43-63DFG

Windows Server 2019 Standard

[Key]:N69G4-B89J2-4G8F4-WWYCC-J464C

Windows Server 2019 Essential

[Key]:WVDHN-86M7X-466 P 6-VHXV7-YY726

格行随身WIFI无视超密一键开SIM+百度直连+自启动

xikuqi阅读(1658)

1.进入网页控制台:192.168.43.1/terminal.html

2.开启adb:
网页控制台逐行执行下面命令:
stop adbd
setprop service.adb.tcp.port 5555
start adbd

然后下载执行我这个脚本一键完成!

如果是将随身WIFI直接插在电脑上进行修改,
需要将脚本内的IP地址192.168.41.1修改为192.168.42.129

下载的文件不要存储在有中文的目录中

这是一键开启SIM卡槽的脚本
https://cloud.189.cn/web/share?code=BbmY3uBj2aQn(访问码:fxs4)

懒人无节操版:
一键开启SIM卡槽+百度直连+自启动脚本 (2021/10/22更新,修正百度直连部分APP无网的问题)
附加两个脚本
关闭百度直连并禁用自启动
开启百度直连并启用自启动
https://cloud.189.cn/web/share?code=qMZ36jzI3ENr(访问码:0jop)

勿私信索取购买的商家链接,就是大家热门的,大家低调使用比较好!本脚本不包含任何额

查看超级密码方法

1. 插电脑USB
访问 http://192.168.42.129/SUPER_PASSWORD 看看可显示

2.无线连接的话 http://192.168.43.1/SUPER_PASSWORD 

执行脚本
http://192.168.43.1/terminal2.html

不想要的可以重新下载下面的还原webkey,执行后就会还原回去了

共有3个附件:
1.随身wifi所有分区文件备份
点击下载(88次)
提取码:6666
2.还原webkey
点击下载(79次)
提取码:6666
3.webkey 第二版
点击下载(54次)
提取码:6666

第二版可以用192.168.43.1/index1.html进入原来的控制面板

绑定 Dokcer 容器到主机指定网卡

xikuqi阅读(792)

如果你的主机有多块网卡,你可能会需要把 Docker 容器绑定到指定网卡,以使容器内的所有网络请求都经过该指定网卡发送至外网。

不幸的是,Docker 并没有直接提供实现该需求的方法。不过,通过 iptables 可以轻松搞定。

一刀切

假设你的主机上有两块网卡:一块网卡的 IP 地址是 192.168.0.100 ;另一块网卡的 IP 地址是 10.0.0.100 。你想让这台主机上的 Docker 容器内的所有服务都走第二块网卡进出外网。

先给出答案再解释:

iptables -t nat -I POSTROUTING -p all -s 172.17.0.0/16 -j SNAT --to-source 10.0.0.100

上面的 iptables 命令创建了一条源地址转换( SNAT )规则,把所有来自 172.17.0.0/16 网段且即将流出本主机的数据包的源 IP 地址都修改为 10.0.0.100 。

对于 10.0.0.100 我们知道它是主机第二块网卡的 IP 地址。而 172.17.0.0/16 是从哪来的呢?

简单来说,在主机上运行 Docker 时,它会在主机上创建一个名为 docker0 的网桥,其 IP 地址为 172.17.0.1 ,网段为 172.17.0.0/16 。默认情况下,Docker 会为所有容器从该网段分配一个 IP 地址。

更详细的说明,可以参考这篇《单 Host 下 Docker 的默认网络配置》 。

所有 Docker 容器的 IP 地址都是在 172.17.0.0/16 网段,那么,上边的 iptables 命令创建的规则就是把所有来自 Docker 容器的且即将流出本主机的数据包的源 IP 地址都修改为本主机的第二块网卡的 IP 地址,即 10.0.0.100 。

这样,就实现了我们需求的『出』这半部分。

而『进』那半部分需求的实现也很简单,只需在 docker run 的时候通过 -p 参数指定主机 IP 即可,如:

docker run -p 10.0.0.100:80:80 ...

分而治

需求变化很快,或许我们又多了一块网卡,其 IP 地址为 10.0.0.101 。而由于某种原因,我们想让一部分容器的流量走第二块网卡,同时让另一部分容器的流量走新加的这第三块网卡。

由于在使用默认网桥时,Docker 不允许为容器指定 IP 地址(如果你指定 IP 地址,Docker 会给出如下错误提示),所以我们无法提前预知某个容器最终被分配给的 IP 地址是什么,也就无法提前通过 iptables 规则为其指定出口网卡。

docker: Error response from daemon: user specified IP address is supported on user defined networks only.

其实,上面的错误提示已经给出了解决的办法,那就是用户自定义网络。

用以下命令创建自定义网络:

docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1"  docker1

其中,172.18.0.0/16 为新建网桥所在网段。因为 Dokcer 默认网桥已经占用了 172.17.0.0/16 ,所以新建网桥只能使用未被占用的其他网段。

第一个 docker1 为执行 ifconfig -a 命令时,显示的网桥名,如果不使用 --opt 参数指定此名称,那你在使用 ifconfig -a 命令查看网络信息时,看到的是类似 br-110eb56a0b22 这样的名字。这显然不怎么好看/记;

第二个 docker1 为执行 docker network list 命令时,显示的网桥名。

有了自定义网络,我们就可以为容器指定一个固定 IP 地址了。

docker run --network=docker1 --ip=172.18.0.100 ......
docker run --network=docker1 --ip=172.18.0.101 ......

知道了容器的固定 IP 地址,那我们就可以如法炮制,把该容器绑定到指定主机网卡了:

iptables -t nat -I POSTROUTING -p all -s 172.18.0.100 -j SNAT --to-source 10.0.0.100
iptables -t nat -I POSTROUTING -p all -s 172.18.0.101 -j SNAT --to-source 10.0.0.101

需要注意的是,这里的 -s 选项后面跟的参数是 IP 地址,而不是网段了。

其他相关命令

  1. 查看 iptables 规则iptables -t nat -L -n --line-number
  2. 删除 iptables 规则iptables -t nat -D POSTROUTING 11其中,最后的 11 是要删除的规则序号(num)。
  3. 删除 Docker 自定义网络docker network rm docker1

sed awk 处理文本文件

xikuqi阅读(838)

一、写在前边
1、sed介绍

sed 全名为 stream editor,流编辑器,用程序的方式来编辑文本,功能相当的强大。是贝尔实验室的 Lee E.McMahon 在 1973 年到 1974 年之间开发完成,目前可以在大多数操作系统中使用,sed 的出现作为 grep 的继任者。与vim等编辑器不同,sed 是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑指令对输入的文本进行编辑,完成之后再输出编辑结构。sed 基本上就是在玩正则模式匹配,所以,玩sed的人,正则表达式一般都比较强。

2、sed工作原理

sed会一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,成为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

3、正则表达式概念

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具,换句话说,正则表达式就是记录文本规则的代码。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

4、正则表达式的匹配过程

简单描述一下正则表达式的匹配过程,就是拿正则表达式所表示的字符串去和原文字符串内容去匹配,直到匹配到原文内容字符串中的一个完整子串就表示匹配成功。举个例子,有一行文件内容"this is better desk",这里用"esk"去匹配,匹配过程是这样的:首先拿e去匹配文件行内容,从this开始,直到better的e,第一个字符匹配成功,接着s去匹配better字符e后边的t字符,没有匹配成功;然后重新拿esk中的e去和better的第二个t去匹配,没有成功,接着原始内容的下一个字符,直到desk中的e字符,逐个匹配s,k字符,到此为止,esk成功匹配,正则表达式匹配完毕,整个过程就是这样,即使再复杂的正则表达式的匹配过程也是按照此过程来进行的。

[root@www ~]# sed [-nefr] [动作]
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
sed -i 就是直接对文本文件进行操作的

sed -i ‘s/原字符串/新字符串/’ /home/1.txt
sed -i ‘s/原字符串/新字符串/g’ /home/1.txt
这两条命令的区别就是,看示例吧

这是1.txt的内容

cat 1.txt

d
ddd

ff

再看执行这两条命令的区别吧

sed -i ‘s/d/7523/’ /home/1.txt
执行结果
7523
7523dd

ff

sed -i ‘s/d/7523/g’ /home/1.txt
执行结果
7523
752375237523

ff

去掉 “行首” 带“@”的首字母@

sed -i ‘s/^@//’ file
特定字符串的行前插入新行

sed -i ‘/特定字符串/i 新行字符串’ file
特定字符串的行后插入新行

sed -i ‘/特定字符串/a 新行字符串’ file
特定字符串的删除

sed -i ‘/字符串/d’ file

二、基本正则表达式
关于正则表达式的内容挺多的,掌握好下文中提及的内容就能满足正常工作中的需要,如果是专门做正则编程的,可以去买本正则表达式的书籍来看好了^_^。只有多动手多练习,才是学开发编程的最好姿势。

  1. 符号”.”

匹配任意一个字符,除了换行符,但是需要注意的是,在sed中不能匹配换行符,但是在awk中可以匹配换行符。类似shell通配符中的”?”,匹配一个任意字符。

  1. 符号”*”

“表示前边字符有0个或多个。”.“表示任意一个字符有0个或多个,也就是能匹配任意的字符。类似shell通配符中的”*”,可以匹配任意字符。

  1. 符号”[]”

“[ ]”中括号中可以包含表示字符集的表达式。使用方法大概有如下几种。
[a-z]:表示a-z字符中的一个,也就是小写字母。
[0-9]:表示0-9字符中的一个,也就是表示数字。
[A-Z]:表示大写字母。
[a-zA-Z]:表示字符集为小写字母或者大写字母。
[a-zA-Z0-9]:表示普通字符,包括大小写字母和数字。
[abc]:表示字符a或者字符b或者字符c。
[^0-9]:表示非数字类型的字符,^表示取反意思,只能放在中括号的开始处才有意义。
[-cz]:表示字符-或者字符c或者字符z,注意与[c-z]的区别,因为-符号没有放在e和f之间。

  1. 符号”^”

“^”表示行首的意思,也就是每一行的开始位置。在这里并不是上边字符范围中取反的意思,^符号只有在”[]”符号的开头处才能表示字符取反。

^abc:表示以abc开头的字符串abc。
^abc.*:表示以abc开头的字符串abcxxx。

  1. 符号”$”

“$”表示行尾的意思,也就是每一行的结尾位置,很好理解,和”^”正好相反。

world$:表示以world结尾的字符串world,如果该行中间有world字符串是不符合匹配条件的。
^$:表示空行。行首和行尾没有内容,可不就是空行嘛。

  1. 符号”\”

“\”表示是转义字符,和其它语言中用到的转义字符意义基本上是一样的。其实简单理解,就是把元字符转义为普通字符,比如”\”表示普通符号”\”,把普通字符转换为特殊意义符号,比如”\n”表示把普通字符n转义为换行符。

  1. 符号”{}”

“{}”表示前边字符的数量范围,大概有三种用法,其实容易理解,看例子就知道了,但是必须注意要加上转义字符”\”,否则不生效,表示为普通字符”{“或”}”。

{2}:表示前边字符的重复次数是2。
{2,}:表示前边字符的重复次数至少是2,也就是大于等于2。
{2,9}:表示前边字符的重复次数大于2但小于9。

  1. 符号”\<“和”>”

“\<“表示匹配条件为词首的位置,理解上可以对比 “^” 行首。
举个例子,”nihao 1hello 2hello3 hello4″有这么内容的一行内容。
“\<hello”匹配结果”nihao 1hello 2hello3 hello4″;
“hello>”匹配结果”nihao 1hello 2hello3 hello4″,这种匹配方式用的不是太多,用到会用就OK。

三、扩展正则表达式
扩展正则表达式是在基本正则表达式中扩展出来的,内容不是很多,使用频率上可能没有基本正则表达式那么高,但是扩展正则依然很重要,很多情况下没有扩展正则是搞不定的。sed命令使用扩展正则需要加上选项-r。

  1. 符号”?”

“?”:表示前置字符有0个或1个。

  1. 符号”+”

“+”:表示前置字符有1个或多个。

  1. 符号”|”

“|”:表示指明两项之间的一个选择。
abc|ABC:表示可以匹配abc或者ABC。

  1. 符号”()”

“()”表示分组,类似算数表达式中的()。子命令表达式中可以通过\1,\2,\3等来表示分组匹配到的内容。其实”()”也可以在基本正则表达式中使用的。

(a|b)b:表示可以匹配ab或者bb字串
([0-9])|([0][0-9])|([1][0-9]):表示匹配0-9或者00-09或者10-19范围的字符。

  1. 符号”{}”

这里的”{}”和基本正则表达式中的大括号意义是一样的,只不过在使用时不用加”\”转义符号。

四、正则表达式的分类和应用
字符类
[Ww]hat .H[12345]

字符的范围
[a-z] [0-9] [Cc]hapter[1-9] [-+*/] [0-1][0-9][-/][0-3][0-9][-/][0-9][0-9]

排除字符类
[^0-9]

重复出现的字符
[15]0* [15]00

字符的跨度
*与{n,m}

电话号码的匹配
[0-9]{3}-[0-9]{7,8}

分组操作
compan(y|ies)

五、sed语法和常用选项
1、语法

sed [选项] ‘command’ 文件名称
选项部分,常见选项包括-n,-e,-i,-f,-r选项。
command部分包括:[地址1,地址2] [函数] [参数(标记)]

2、常用选项

选项-n

sed默认会把模式空间处理完毕后的内容输出到标准输出,也就是输出到屏幕上,加上-n选项后被设定为安静模式,也就是不会输出默认打印信息,除非子命令中特别指定打印选项,则只会把匹配修改的行进行打印。

例子1:

echo -e ‘hello world\nnihao’ | sed ‘s/hello/A/’
结果:
A world
nihao
例子2:

echo -e ‘hello world\nnihao’ | sed -n ‘s/hello/A/’
结果:加-n选项后什么也没有显示。
例子3:

echo -e ‘hello world\nnihao’ | sed -n ‘s/hello/A/p’
结果:A world/
说明:-n选项后,再加p标记,只会把匹配并修改的内容打印了出来。
选项-e

如果需要用sed对文本内容进行多种操作,则需要执行多条子命令来进行操作。

例子1:

echo -e ‘hello world’ | sed -e ‘s/hello/A/’ -e ‘s/world/B/’
结果:A B
例子2:

echo -e ‘hello world’ | sed ‘s/hello/A/;s/world/B/’
结果:A B
说明:例子1和例子2的写法的作用完全等同,可以根据喜好来选择,如果需要的子命令操作比较多的时候,无论是选择-e选项方式,还是选择分号的方式,都会使命令显得臃肿不堪,此时使用-f选项来指定脚本文件来执行各种操作会比较清晰明了。

选项-i

sed默认会把输入行读取到模式空间,简单理解就是一个内存缓冲区,sed子命令处理的内容是模式空间中的内容,而非直接处理文件内容。因此在sed修改模式空间内容之后,并非直接写入修改输入文件,而是打印输出到标准输出。如果需要修改输入文件,那么就可以指定-i选项。

例子1:

cat file.txt
hello world
[root@localhost]# sed ‘s/hello/A/’ file.txt
A world
[root@localhost]# cat file.txt
hello world
例子2:

[root@localhost]# sed -i ‘s/hello/A/’ file.txt
[root@localhost]# cat file.txt
A world
例子3:

[root@localhost]# sed –i.bak ‘s/hello/A/’ file.txt
说明:最后一个例子会把修改内容保存到file.txt,同时会以file.txt.bak文件备份原来未修改文件内容,以确保原始文件内容安全性,防止错误操作而无法恢复原来内容。

选项-f

还记得 -e 选项可以来执行多个子命令操作,用分号分隔多个命令操作也是可以的,如果命令操作比较多的时候就会比较麻烦,这时候把多个子命令操作写入脚本文件,然后使用 -f 选项来指定该脚本。
例子1:

echo “hello world” | sed -f sed.script
结果:A B
sed.script脚本内容:

s/hello/A/
s/world/B/
说明:在脚本文件中的子命令串就不需要输入单引号了。

选项-r

sed命令的匹配模式支持正则表达式的,默认只能支持基本正则表达式,如果需要支持扩展正则表达式,那么需要添加-r选项。
例子1:

echo “hello world” | sed -r ‘s/(hello)|(world)/A/g’
A A
六、数字定址和正则定址
1、关于定址的概念

默认情况下sed会对每一行内容进行匹配、处理、输出,某些情况不需要对处理的文本全部编辑,只需要其中的一部分,比如1-10行,偶数行,或者是包含”hello”字符串的行,这种情况下就需要我们去定位特定的行来处理,而不是全部内容,这里把这个定位指定的行叫做”定址”。

2、数字定址

数字定址其实就是通过数字去指定具体要操作编辑的行,数字定址有几种方式,每种方式都有不同的应用场景,下边以举例的方式来描述每种数字定址的用法。

例子1:

sed –n ‘4s/hello/A/’ message
说明:将第4行中hello字符串替换为A,其它行如果有hello也不会被替换。

例子2:

sed –n ‘2,4s/hello/A/’ message
说明:将第2-4行中hello字符串替换为A,其它行如果有hello也不会被替换。

例子3:

sed –n ‘2,+4s/hello/A/’ message
说明:从第2行开始,再接着往下数4行,也就是2-6行,这些行会把hello字符替换为A。

例子4:

sed –n ‘4,~3s/hello/A/’ message
说明:第4行开始,到第6行。解释6的由来,”4,~3″表示从4行开始到下一个3的倍数,这里从4开始算,那就是6了,当然9就不是了,因为是要求3的第一个超过前边数字4的倍数,感觉这种适用场景不会太多。

例子5:

sed –n ‘4~3s/hello/A/’ message
说明:从第4行开始,每隔3行就把hello替换为A。比如从4行开始,7行,10行等依次+3行。这个比较常用,比如3替换为2的时候,也就是每隔2行的步调,可以实现奇数和偶数行的操作。

例子6:

sed –n ‘$s/hello/A/’ message
说明:$符号表示最后一行,和正则中的$符号类似,但是第1行不用^表示,直接1就行了。

例子7:

sed -n ‘1!s/hello/A/’ message
说明:!符号表示取反,该命令是将除了第1行,其它行hello替换为A,上述定址方式也可以使用!符号。

3、正则定址

正则定址使用目的和数字定址完全一样,使用方式上有所不同,是通过正则表达式的匹配来确定需要处理编辑哪些行,其它行就不需要额外处理。

例子1:

sed -n ‘/nihao/d’ message
说明:将匹配到nihao的行执行删除操作。
例子2:

sed -n ‘/^$/d’ message
说明:删除空行
例子3:

sed -n ‘/^TS/,/^TE/d’ message
说明:匹配以TS开头的行到TE开头的行之间的行,把匹配到的这些行删除。
4、数字定址和正则定址混用

其实数字定址和正则定址可以配合使用,参考下边的例子。

例子1:

sed -n ‘1,/^TS/d’ message
说明:匹配从第1行到TS开头的行,把匹配的行删除。
5、关于定址的分组命令

例子1:

/^TS/,/^TE/{
s/CN/China/
s/Beijing/BJ/
}
说明:该命令表示将从TS开头的行到TE开头的行之间范围的行内容中CN替换为China,并且把Beijing替换为BJ,类似于多命令之间用分号的那种方式,不过这样定址代码只写了一遍,相当于执行了一条子命令。

例子2:

sed -n ‘2,3s{/cn/china/;/a/b/}’ message
说明:效果类似例子1,有点数学上的乘法分配率的意思。

6、sed定址的总结

sed 默认的命令执行范围是全局编辑的,如果不明确指定行的话,命令会在所有输入行上执行,如果想仅对其中部分行执行命令,可以使用地址限制。如果给了 2 个地址,即地址对(地址范围),则命令匹配的这个地址范围内执行,但是需要注意的是:对于像 "addr1,addr2" 这种形式的地址匹配,如果addr1 匹配,则匹配成功,"开关"打开,在该行上执行命令,此时不管 addr2 是否匹配,即使 addr2 在 addr1 这一行之前;接下来读入下一行,如果addr2 匹配,则执行命令,同样开关"关闭";如果 addr2 在 addr1 之后,则一直处理到匹配为止,换句话说,如果 addr2 一直不匹配,则开关一直不关闭,因此会持续执行命令到最后一行。

七、基本子命令
1、子命令a

子命令a表示在指定行下边插入指定行的内容。

例子1:

sed ‘a A’ message
说明:将message文件中每一行下边都插入添加一行内容是A。
例子2:

sed ‘1,2a A’ message
说明:将message文件中1-2行的下边插入添加一行内容是A
例子3:

sed ‘1,2a A\nB\nC’ message
说明:将message文件中1-2行的下边分别添加3行,3行内容分别是A、B、C,这里使用了\n,插入多行内容都可以按照这种方式来实现。
2、子命令i

子命令i和a使用上基本上一样,只不过是在指定行上边插入指定行的内容。

例子1:

sed ‘i A’ message
说明:将message文件中每一行上边都插入添加一行内容是A。
例子2:

sed ‘1,2i A’ message
说明:将message文件中1-2行的上边插入添加一行内容是A
例子3:

sed ‘1,2i A\nB\nC’ message
说明:将message文件中1-2行的上边分别添加3行,3行内容分别是A、B、C,这里使用了\n,插入多行内容都可以按照这种方式来实现。
3、子命令c

子命令c是表示把指定的行内容替换为自己需要的行内容。

例子1:

sed ‘c A’ message
说明:将message文件中所有的行内容都分别替换为A行内容。
例子2:

sed ‘1,2c A’ message
说明:将message文件中1-2行的内容替换为A,注意这里说的是将1-2行所有的内容只替换为一个A内容,也就是1-2行内容编程了一行,定址如果连续就是这种情况。如果想把1-2行分别替换为A,可以参考下个例子的方式。

例子3:

sed ‘1,2c A\nA’ message
说明:将message中1-2行内容分别替换为了A,需要在替换内容上手动加换行\n,这样当然也可以将一行内容替换为多行内容。
4、子命令d

子命令d表示删除指定的行内容,比较简单,更容易理解。

例子1:

sed ‘d’ message
说明:将message所有行全部删除,因为没有加定址表达式,所以平时如果需要删除指定行内容,需要在子命令前加定址表达式。
例子2:

sed ‘1,3d’ message
说明:将message文件中1-3行内容删除。
5、子命令y

子命令y表示字符替换,可以替换多个字符,只能替换字符不能替换字符串,且不支持正则表达式,具体使用方法看例子。

例子1:

sed ‘y/ab/AB/’ message
说明:把message中所有a字符替换为A符号,所有b字符替换为B符号。
强调一下,这里的替换源字符个数和目的字符个数必须相等;字符不支持正则表达式;源字符和目标字符每个字符需要一一对应。

6、子命令=

子命令=,可以将行号打印出来。
例子:

sed ‘1,2=’ message
结果:

1
nihao
2
hello world
说明:将指定行的上边显示行号。
7、子命令r

子命令r,类似于a,也是将内容追加到指定行的后边,只不过r是将指定文件内容读取并追加到指定行下边。

例子1:

sed ‘2r a.txt’ message
说明:将a.txt文件内容读取并插入到message文件第2行的下边。
8、子命令s

子命令s为替换子命令,是平时sed使用的最多的子命令,没有之一。因为支持正则表达式,功能变得强大无比,下边来详细地说说子命令s的使用方法。

基本语法:
[address]s/pattern/replacement/flags

s字符串替换,替换的时候可以把/换成其它的符号,比如=,replacement部分用下列字符会有特殊含义:

&:用正则表达式匹配的内容进行替换
\n:回调参数
():保存被匹配的字符以备反向引用\n时使用,最多9个标签,标签书序从左到右
Flags

n:可以是1-512,表示第n次出现的情况进行替换
g:全局更改
p:打印模式空间的内容
w file:写入到一个文件file中
实例用法

测试文件:

cat message

hello 123 world
例子1:

sed ‘s/hello/HELLO/’ message
说明:将message每行包含的第一个hello的字符串替换为HELLO,这是最基本的用法。
例子2:

sed -r ‘s/[a-z]+ [0-9]+ [a-z]+/A/’ message
结果:A
说明:使用了扩展正则表达式,需要加-r选项。
例子3:

sed -r ‘s/([a-z]+)( [0-9]+ )([a-z]+)/\1\2\3/’ message
结果:hello 123 world
说明:再看下一个例子就明白了。
例子4:

sed -r ‘s/([a-z]+)( [0-9]+ )([a-z]+)/\3\2\1/’ message
结果:world 123 hello
说明:\1表示正则第一个分组结果,\2表示正则匹配第二个分组结果,\3表示正则匹配第三个分组结果。
例子5:

sed -r ‘s/([a-z]+)( [0-9]+ )([a-z]+)/&/’ message
结果:hello 123 world
说明:&表示正则表达式匹配的整个结果集。
例子6:

sed -r ‘s/([a-z]+)( [0-9]+ )([a-z]+)/111&222/’ message
结果:111hello 123 world222
说明:在匹配结果前后分别加了111、222。
例子7:

sed -r ‘s/.*/111&222/’ message
说明:在message文件中每行的首尾分别加上111、222。
例子8:

sed ‘s/i/A/g’ message
说明:把message文件中每行的所有i字符替换为A,默认不加g标记时只替换每行的第一个字符。
例子9:

sed ‘s/i/A/2’ message
说明:把message文件中每行的第2个i字符替换为A。
例子10:

sed -n ‘s/i/A/p’ message
说明:加-p标记会把被替换的行打印出来,再加上-n选项会关闭模式空间打印模式,因此该命令的效果就是只显示被替换修改的行。
例子11:

sed -n ‘s/i/A/w b.txt’ message
说明:把message文件中内容的每行第一个字符i替换为A,然后把修改内容另存为b.txt文件。
例子12:

sed -n ‘s/i/A/i’ message
说明:把message文件中每一行的第一个i或I字符替换为A字符,也即是忽略大小写。

八、sed工作模式
1、模式空间和保持空间

模式空间初始化为空,处理完一行后会自动输出到屏幕并清除模式空间;保持空间初始化为一个空行,也就是默认带一个\n,处理完后不会自动清除。模式空间和保持空间,从程序的角度去看,其实就是sed在工作的时候占用了一些内存空间和地址,sed工作完毕就会把内存释放并归还给操作系统。

2、sed工作流程

大概简单描述一下sed的工作流程,读取文件的一行,存入模式空间,然后进行所有子命令的处理,处理完后默认会将模式空间的内容输出打印到标准输出,也就是在屏幕上显示出来,接着清空模式空间的内存,继续读取下一行的内容到模式空间,继续处理,依次循环处理。

3、模式空间和保持空间的置换

h:把模式空间内容覆盖到保持空间中
H:把模式空间内容追加到保持空间中
g:把保持空间内容覆盖到模式空间中
G:把保持空间内容追加到模式空间中
x:交换模式空间与保持空间的内容

4、实例用法

测试文件:

cat test.txt

11111
22222
33333
44444
例子1:

sed ‘{1h;2,3H;4G}’ test.txt
结果:
11111
22222
33333
44444
11111
22222
33333
解释说明:略。懒得写了。

例子2:

sed ‘{1h;2x;3g;$G}’ test.txt
结果:
11111
11111
22222
44444
22222
解释说明:略。

例子3:

sed ‘{1!G;h;$!d}’ test.txt
结果:
44444
33333
22222
11111
九、高级子命令
高级子命令比较少,但是比较复杂,平时用的也会相对少些,却也很重要,有的内容处理不用高级子命令是完成不了的。

n:读入下一行到模式空间,例:’4{n;d}’ 删除第5行。
N:追加下一行到模式空间,再把当前行和下一行同时应用后面的命令。
P:输出多行模式空间的第一部分,直到第一个嵌入的换行符位置。在执行完脚本的最后一个命令之后,模式空间的内容自动输出。P命令经常出现在N命令之后和D命令之前。
D:删除模式空间中第一个换行符的内容。它不会导致读入新的输入行,相反,它返回到脚本的顶端,将这些指令应用与模式空间剩余的内容。这3个命令能建立一个输入、输出循环,用来维护两行模式空间,但是一次只输出一行。

例子1:

sed ‘N;$!P;D’ a.txt

说明:删除文件倒数第二行

例子2:

sed ‘N;$!P;$!D;$d’ a.txt

说明:删除文件最后两行

十、分支和测试
分支命令用于无条件转移,测试命令用于有条件转移。

1、分支branch
跳转的位置与标签相关联。
如果有标签则跳转到标签所在的后面行继续执行。
如果没有标签则跳转到脚本的结尾处。
标签:以冒号开始后接标签名,不要在标签名前后使用空格。

2、跳转到标签指定位置
测试文件:

grep seker /etc/passwd
seker:x:500:500::/home/seker:/bin/bash
例子1:

grep seker /etc/passwd | sed ‘:top;s/seker/blues/;/seker/b top;s/5/555/’
结果:blues:x:55500:500::/home/blues:/bin/bash
选择执行
例子2:

grep ‘seker’ /etc/passwd | sed ‘s/seker/blues/;/seker/b end;s/5/555/;:end;s/5/666/’
结果:blues:x:66600:500::/home/seker:/bin/bash
测试命令,如果前一个替换命令执行成功则跳转到脚本末尾(case结构)
例子3:

grep ‘seker’ /etc/passwd | sed ‘s/seker/ABC;t;s/home/DEF/;t;s/bash/XYZ/’
结果:ABC:x:500:500::/home/seker:/bin/bash
例子4:

grep ‘zorro’ /etc/passwd | sed ‘s/seker/ABC/;t;s/home/DEF/;t;s/bash/XYZ’
结果:zorro:x:500:500::/DEF/zorro:/bin/bash
与标签关联,跳转到标签位置。
例子5:

grep ‘seker’ /etc/passwd | sed ‘s/seker/ABC/;t end;s/home/DEF/;t;end;s/bash/XYZ’
结果:ABC:x:500:500::/home/seker:/bin/XYZ
十一、sed实战练习
实例1:删除文件每行的第二个字符。

sed -r ‘s/(.*)(.)$/\1/’
实例2:删除文件每行的最后一个字符。

sed -r ‘s/(.*)(.)$/\1/’
实例3:删除文件每行的倒数第2个单词。

sed -r ‘s/(.)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]$)/\1\2\4\5/’ /etc/passwd
实例4:交换每行的第一个字符和第二个字符。

sed -r ‘s/(.)(.)(.*)/\2\1\3/’ /etc/passwd
实例5:交换每行的第一个单词和最后一个单词。

sed -r ‘s/([a-Z]+)([^a-Z]+)(.)([^a-Z]+)([a-Z]+)([^a-Z]$)/\5\2\3\4\1\6/’ /etc/passwd
实例6:删除一个文件中所有的数字。

sed ‘s/[0-9]//g’ /etc/passwd
实例7:用制表符替换文件中出现的所有空格。

sed -r ‘s/ +/\t/g’ /etc/passwd
实例8:把所有大写字母用括号()括起来。

sed -r ‘s/([A-Z])/(\1)/g’ /etc/passwd
实例9:打印每行3次。

sed ‘p;p’ /etc/passwd
实例10:隔行删除

sed ‘0~2{=;d}’ /etc/passwd
实例11:把文件从第22行到第33行复制到56行后面。

sed ‘22h;23,33H;56G’ /etc/passwd
实例12:把文件从第22行到第33行移动到第56行后面。

sed ‘22{h;d};23,33{H;d};56g’ /etc/passwd
实例13:只显示每行的第一个单词。

sed -r ‘s/([a-Z]+)([^a-Z]+)(.*)/\1/’ /etc/passwd
实例14:打印每行的第一个单词和第三个单词。

sed -r ‘s/([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)(.*)/\1\t\5/’ /etc/passwd
实例15:将格式为mm/yy/dd的日期格式换成 mm;yy;dd

date ‘+%m/%y/%d’ | sed ‘s/\//;/g’
————————————————
版权声明:本文为CSDN博主「neo_will_mvp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33468857/article/details/84324609

centos7安装Docker 开启Docker Remote API 启用 API TLS

xikuqi阅读(886)

一 安装docker

 

 

 

 

 

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

 

yum install -y yum-utils device-mapper-persistent-data lvm2

 

设置官方yum源才能安装最新版本,如果不设置安装的将是古老的1.13版本。

 

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

卸载旧版本(如果安装过旧版本的话)

 

yum remove docker  docker-common docker-selinux docker-engine

 

安装docker,并且设置启动

 

yum install docker-ce
systemctl start docker
systemctl enable docker

 

二 开启docker api

  • Ubuntu系统:/etc/default/docker文件
  • Centos系统:/etc/sysconfig/docker文件

该配置文件最后,添加内容如下: OPTIONS='-H=tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock' 重启dockers 进程 systemctl restart docker cat >> /usr/lib/systemd/system/docker.service <<EOF OPTIONS=’-H=tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock’ EOF

三 启用TLS wget https://cloud.tianjidian.com/file/dockerapi.sh ; chmod +x dockerapi.sh ; sh dockerapi.sh

 

systemctl restart docker cat >> /usr/lib/systemd/system/docker.service <<EOF

OPTIONS=’–tlsverify \
–tlscacert=/root/tls/pem/ca.pem \
–tlscert=/root/tls/pem/server-cert.pem \
–tlskey=/root/tls/pem/server-key.pem \
-H=tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock’

EOF

分享是一种美德,是一种态度。

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

登录

找回密码

注册