CUPS（通用 Unix 打印系统）是类 Unix 操作系统中用于打印和打印服务的主要机制。它可以让计算机充当打印服务器。步骤 1. 首先，通过apt在终端中运行以下命令确保所有系统包都是最新的。sudo apt update sudo apt upgrade步骤 2. 在 Ubuntu 20.04 上安装 CUPS 打印机服务器。CUPS 默认安装在 Ubuntu 桌面中。要在 Ubuntu 服务器上安装 CUPS，请输入以下命令：sudo apt install cups安装CUPS打印服务器后，通过以下命令启动CUPS打印服务：sudo systemctl start cups sudo systemctl enable cups sudo systemctl status cups步骤 3. 在 Ubuntu 上配置 CUPS。现在我们编辑 CUPS 主配置文件：sudo nano /etc/cups/cupsd.conf首先查找该行：Browsing Off将该行更改为：Browsing On接下来，找到“仅侦听来自本地计算机的连接”部分。在这里，将有一个标题为“Listen localhost:631”的条目。将其更改为“端口 631”：#Listen localhost:631 Port 631我们还需要确保 CUPS 正在侦听所有接口。为此，请查找以下部分：<Location /> Order allow,deny </Location>将上面的部分更改为：<Location /> Order allow,deny Allow @LOCAL </Location>此外，为目录添加它以允许从本地网络进行远程管理：/admin<Location /admin> Order allow,deny </Location>将该部分更改为：<Location /admin> AuthType Default Require valid-user Order allow,deny Allow @LOCAL </Location>保存并关闭文件。然后重新启动 CUPS 以使更改生效：sudo systemctl restart cups配置 CUPS 后，现在我们将确保使用 Bonjour 和 IPP 协议将打印机共享到您的网络。首先，我们需要使用以下命令安装 avahi-daemon：sudo apt install avahi-daemon安装 Avahi-daemon 后，使用以下命令启动和自动引导时间：sudo systemctl start avahi-daemon sudo systemctl enable avahi-daemon步骤 4. 配置防火墙。如果您启用了防火墙，请确保允许客户端的机器与 CUPS 端口 631 通信：sudo ufw allow 631/tcp sudo ufw allow 5353/udp步骤 5. 连接到打印机。现在我们添加的打印机将取决于您使用的桌面操作系统。例如，使用 Ubuntu Linux，我可以从 Settings | 打开 Add Printer 窗口。设备和新打印机会自动出现。无图形界面可以通过将浏览器指向. 管理控制台位于地址。对于管理控制台，系统会提示您输入有效的用户名和密码。http://your-server-ip-addrees:631 https://your-server-ip-address:631/admin
U盘做成启动盘或刷入固件后恢复正常的U盘
U盘做成启动盘或刷入固件，想恢复正常U盘使用，Windows识别不出来U盘或者只能识别出几百兆，一起看看怎么恢复吧！请注意：恢复之后的U盘内刷入的其他东西会清空，也就是格式化了先将U盘插入电脑，Windows10右键开始菜单打开磁盘管理，找到U盘查看信息，我的这里的U盘是磁盘2win键+R输入CMD打开命令窗口，输入：diskpart回车在diskpart{就是新的窗口}输入：list disk回车，列出所有磁盘，{用于再次确认U盘信息}我的这里的U盘依然是2继续输入：select disk 2回车，我这里的U盘是2所以输入select disk 2，如果你的U盘显示的时磁盘1就写入：select disk 1，别弄错了再在diskpart窗口输入clean清空磁盘回到磁盘管理找到U盘，可以看到变成未分配空间，右键U盘新建简单卷，直接下一步到完成即可回到资源管理器就可以看到U盘已经显示正常空间，可以正常使用了版权源作者
ctopecho "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add - sudo apt update sudo apt install docker-ctop
国外https://nxmac.comhttps://www.macserialjunkie.com/http://mac-torrent-download.nethttps://macdownload.org/https://cmacapps.com/国内https://www.macbl.com/app/newhttps://www.waitsun.com/https://xclient.info/https://www.0daydown.com/xclient.info 只有城通，速度慢macwk.com
下载工具Motrixhttps://motrix.app/写盘工具balenaEtcherhttps://www.balena.io/USB Image Tool
Ubuntu 远程唤醒ifconfig查询网卡接口sudo apt-get install ethtoolsudo ethtool enp3s0 |grep Wake-on如果显示结果为上面这样，就表示网卡支持WOL：配置无线网卡查询网卡ifconfig -a查到无线网卡 wlp2s0:进入网卡配置cd /etc/netplan/nano 00-installer-config-wifi.yamlnetwork: version: 2 renderer: NetworkManager wifis: wlp2s0: dhcp4: no addresses: [192.168.0.98/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1,8.8.8.8] access-points: wifi: password: WifPasswordwifi:wifi名 WifPassword：wifi密码安装 wpasupplicant （wap加密工具）apt-get install wpasupplicant安装 network-manager (无线管理)apt-get install network-manager安装 wpasupplicant以及network-manager编辑/etc/netplan目录下的配置文件加入renderer: NetworkManager加入对应无线网卡的设置重启主机[button color="info" icon="" url="https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/netplan-how-to-configure-static-ip-address-in-ubuntu-18-04-using-netplan.html" type="round"]Netplan reference[/button]禁用启动网卡ifconfig [NIC_NAME] Down/Up
用的工具：samba。（其实比不过现成的软件，WinSCP还稳定一点）第一步：在Linux上安装Samba：sudo apt-get install samba第二步：配置一个通过samba访问Linux文件夹时，需要用到的用户名和密码：smbpasswd -a 用户名 #在实际时，把这个用户名替换成自己的用户名。enter后，会有密码输入 注意替换这个“用户名”为自己的名字。至于密码，enter后，会提示。 第三步：创建一个文件夹。或者直接使用现有的文件夹。第四步：在配置文件中，添加这个我们想共享的文件夹的路径和一些配置信息：sudo vi /etc/samba/smb.conf第五步：在这个文件的最后，需要添加一点东西：[share_name] #符号[ ]里面的是共享文件夹对外的名字，称为共享名字，注意[ ]不能掉path = /home/book/Desktop/example #这个path就是你想共享的那个文件夹的路径available = yesvalid users = 用户名 #这个book，就是我们刚才在第二步创建的那个用户名，记得替换read only = nobrowsable = yespublic = yeswritable = yesaio read size = 0其它设置，可根据自己需求来选择。第六步：重启SMB服务：sudo service smbd restartOK，上面Linux的共享文件夹已经设置完毕第七步：在Windows上添加这个共享文件夹。在任何一个你想添加这个共享文件夹的地方，右键—新建—快捷方式图片然后： 图片在这个白框里面输入：\IP地址\共享文件夹的名字IP地址，就是Linux的IP地址，可以用过ifconfig命令来查看。至于“共享文件夹的名字”，就是在第五步，我们自己设置的share_name。第八步：在Windows上成功创建这个快捷方式后。访问它，就需要用到第二步设置的用户名和密码，注意第五步valid users与之进行匹配。然后就是按提示，输入这个用户名和密码。Done!后记：经过实测，samba并不稳定，用notepad++打开Linux挂载到Windows文件时，甚至会出现notepad++卡死的情况；并且在Linux的挂载文件下执行文件时，可能还会出现文件错位的情况（不是该文件的内容，结果在执行时，被当做该文件的一部分）相较之下，还是现成的软件WinSCP用的方便。直接在WinSCP下，用notepad++打开文件，保存后，WinSCP自动更新Linux下对应文件。[button color="info" icon="" url="https://zhuanlan.zhihu.com/p/305265719" type=""]泡芙-linux搭建samba 所踩的坑及解决办法[/button]
df -Th 查询分区表fdisk -l查询硬盘找到新添加的硬盘Device Start End Sectors Size Type /dev/sdb1 2048 3907029134 3907027087 1.8T Linux LVMfdisk /dev/sdb新建分区N1回车yes修改格式tL (找到 LINUX LVM)格式化分区mkfs.ext4 / dev / sdb1创建目录mkdir /mnt/sdb1挂载分区到 /mnt/sdb1mount /dev/sdb1 /mnt/sdb1开机自动挂载分区nano /etc/fstab/dev/sdb1 /mnt/sdb1 ext4 defaults 0 0
Tasker实现收到Android手机短信自动、未接电话转发到微信
前言本篇简单介绍下如何使用上。原理短信转发到微信上是使用的企业微信的一项功能：企业微信收到的信息可以同步到微信，而企业微信有着丰富的可开发性。步骤整个操作步骤是：1.注册企业微信；2.创建一个应用；3.在tasker中创建配置文件。注册企业微信a. 点击这里注册：https://work.weixin.qq.com/wework_admin/register_wx?from=myhome 1分钟时间注册下就行，比较简单。b. 注册完成后打开：https://work.weixin.qq.com/wework_admin/frame#profile 复制下网页底部的企业信息中的企业ID备用。c. 点击微工作台https://work.weixin.qq.com/wework_admin/frame#profile/wxPlugin看到一个二维码,使用微信扫码关注,这样就可以使企业微信中收到的信息同步到微信上。创建一个应用a.点击这里创建 https://work.weixin.qq.com/wework_admin/frame#apps/createApiApp上传一个应用logo和自定义应用名字，其他默认。b.创建后打开：https://work.weixin.qq.com/wework_admin/frame#apps 可以看到在 “应用”中的“自建”里有个应用。点进去打开记录下 AgentId和Secret备用。创建tasker配置文件[collapse status="false" title="配置明细"]华为手机要关闭验证码安全保护[/collapse][collapse status="false" title="短信配置-内容（筛选转发内容）"]*动态口令*/*随机码*/*代码*/*激活码*/*动态码*/*校验码*/*验证码*/*确认码*/*检验码*/*验证代码*/*激活代码*/*校验代码*/*动态代码*/*检验代码*/*确认代码*/*短信口令*/*动态密码*/*交易码*/*驗證碼*/*激活碼*/*動態碼*/*校驗碼*/*檢驗碼*/*驗證代碼*/*激活代碼*/*校驗代碼*/*確認代碼*/*動態代碼*/*檢驗代碼*/*随机密码*/*短信密码*/*CODE*/*code*/*Confirm*/*confirm*/*Verify*/*verify*/*TLSG*/*NSMS*[/collapse]Tasker自动转发手机短信到微信[collapse status="false" title="JavaScriptlet 无收件人"]//下面的三个变量值需要修改 var ID = "wwc367de248887ebad"; var SECRET = "KNgBbhHiTo66VSVzqLv0vYCadXE0ndrn5o41xxxB2o4"; var AGENTID = "1000002"; //定义post方法 function posthttp(url, data) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("POST", url, false); xhr.send(data); return xhr.responseText; } //定义get方法 function gethttp(url) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("GET", url, false); xhr.send(); return xhr.responseText; } //获取token var gettoken = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + ID + "&corpsecret=" + SECRET; var ACCESS_TOKEN = JSON.parse(gethttp(gettoken)).access_token; //发送消息(文本) var SMSRF = global('SMSRF'); var SMSRB = global('SMSRB'); var SMSRT = global('SMSRT'); var SMSRD = global('SMSRD'); var CONTENT = "发件人: " + SMSRF + "\n时间: " + SMSRT + ", 日期: " + SMSRD + "\n短信内容: " + SMSRB; var message = JSON.stringify({ "touser": "@all", "msgtype": "text", "agentid": AGENTID, "text": { "content": CONTENT }, "safe": 0 }); var send = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + ACCESS_TOKEN; posthttp(send, message);[/collapse][collapse status="false" title="JavaScriptlet 有收件人"]//下面的三个变量值需要修改 var ID = "ww3c067de248ce7eb1ad"; var SECRET = "KNgBbhHiTo55VSVzqLv0vYCadXE0ndrn5o41cmuB2o4"; var AGENTID = 1000002; //获取消息 var smsrf = global('SMSRF'); var smsrb = global('SMSRB'); var mmsrs = global('MMSRS'); var smsrt = global('SMSRT').replace(/\./, ":"); //flash(smsrf) var pnum = global('PNUM').substring(3); var smsrd = global('SMSRD'); //定义post方法 function postHttp(url, data) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("POST", url, false); xhr.send(data); return xhr.responseText; } //定义get方法 function getHttp(url) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("GET", url, false); xhr.send(); return xhr.responseText; } //判断是短信,彩信还是无法获取短信内容 smsrb = (smsrb == "%SMSRB") ? (mmsrs == "%MMSRS") ? "无法获取短信内容" : mmsrs : smsrb; // if (smsrb == "无法获取内容") { flashLong(smsrb) } else { //获取token var tokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + ID + "&corpsecret=" + SECRET; var access_tokenJson = JSON.parse(getHttp(tokenUrl)); if (access_tokenJson.errcode == 0) { var access_token = access_tokenJson.access_token; //发送消息(文本) var content = "发件人: " + smsrf + "\n收件人: " + pnum + "\n时间: " + smsrt + ", 日期: " + smsrd + "\n短信内容: " + smsrb; var message = JSON.stringify( { "touser" : "@all", //@all代表发送给全体成员，也可指定某几个人,比如"a|b|c" //"toparty" : "1|2",//部门id //"totag" : "1|2",//标签id,文档说明：https://work.weixin.qq.com/api/doc#90000/90135/90236 "msgtype" : "text", "agentid" : AGENTID, "text" : { "content" : content }, "safe" : 0 }); var msgUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token; postHttp(msgUrl, message) } else if (access_tokenJson.errcode == 40013) { flashLong("ID 错误,请检查是否修改正确(请注意不要有空格)"); } else if (access_tokenJson.errcode == 40001) { flashLong("SECRET 错误,请检查是否修改正确(请注意不要有空格)"); } };[/collapse][button color="light" icon="" url="https://tasker.joaoapps.com/userguide/zh/" type=""]Tasker：官方用户指南[/button][scode type="yellow"]注:1.为保证Tasker正常运行,请将Tasker加入电池白名单,即允许Tasker后台运行.允许Tasker自启.允许Tasker被第三方应用启动.2.为保证配置正常触发,请将Tasker的通知使用权和通知管理权打开.[/scode][collapse status="false" title="查询节假日"]<TaskerData sr="" dvi="1" tv="5.0u7m"> <Task sr="task39"> <cdate>1551218749205</cdate> <edate>1554531601695</edate> <id>39</id> <nme>API节假日</nme> <pri>100</pri> <Action sr="act0" ve="7"> 547 <Str sr="arg0" ve="3">%Holiday1</Str> <Str sr="arg1" ve="3">%DATE</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> </Action> <Action sr="act1" ve="7"> 598 <Str sr="arg0" ve="3">%Holiday1</Str> <Str sr="arg1" ve="3">-(\d)-</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> <Str sr="arg5" ve="3"/> <Int sr="arg6" val="1"/> <Str sr="arg7" ve="3">-0$1-</Str> </Action> <Action sr="act2" ve="7"> 598 <Str sr="arg0" ve="3">%Holiday1</Str> <Str sr="arg1" ve="3">-(\d)$</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> <Str sr="arg5" ve="3"/> <Int sr="arg6" val="1"/> <Str sr="arg7" ve="3">-0$1</Str> </Action> <Action sr="act3" ve="7"> 598 <Str sr="arg0" ve="3">%Holiday1</Str> <Str sr="arg1" ve="3">-</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> <Str sr="arg5" ve="3"/> <Int sr="arg6" val="1"/> <Str sr="arg7" ve="3"/> </Action> <Action sr="act4" ve="7"> 118 <Str sr="arg0" ve="3">api.goseek.cn</Str> <Str sr="arg1" ve="3">Tools/holiday?date=%Holiday1</Str> <Str sr="arg2" ve="3"/> <Str sr="arg3" ve="3"/> <Str sr="arg4" ve="3"/> <Int sr="arg5" val="10"/> <Str sr="arg6" ve="3"/> <Str sr="arg7" ve="3"/> <Int sr="arg8" val="0"/> </Action> <Action sr="act5" ve="7"> 547 <Str sr="arg0" ve="3">%Holiday2</Str> <Str sr="arg1" ve="3">%HTTPD</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> </Action> <Action sr="act6" ve="7"> 598 <Str sr="arg0" ve="3">%Holiday2</Str> <Str sr="arg1" ve="3">.*?data[^\d]*(\d).*</Str> <Int sr="arg2" val="0"/> <Int sr="arg3" val="0"/> <Int sr="arg4" val="0"/> <Str sr="arg5" ve="3"/> <Int sr="arg6" val="1"/> <Str sr="arg7" ve="3">$1</Str> </Action> </Task> </TaskerData>[/collapse]Tasker自动转发未接电话提醒到微信[collapse status="false" title="JavaScriptlet 未接电话"]//下面的三个变量值需要修改 var ID = "ww3c67de428ec7ebad"; var SECRET = "KNgBbbHiTo66VSVzqLv0vYCadXE11drn5o41cmuB2o4"; var AGENTID = 1000003; //定义post方法 function postHttp(url, data) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function() { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("POST", url, false); xhr.send(data); return xhr.responseText; } //定义get方法 function getHttp(url) { var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function() { if (this.readyState === 4) { flash(this.responseText); //显示返回消息,可删除本行 } }); xhr.open("GET", url, false); xhr.send(); return xhr.responseText; } //获取token var tokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + ID + "&corpsecret=" + SECRET; var access_token = JSON.parse(getHttp(tokenUrl)).access_token; //发送消息(文本) var cnum = global('CNUM'); cnum = cnum ? cnum: "来电未显示号码"; var cname = global('CNAME'); cname = (cname == "?") ? cnum: cname; var ctime = global('CTIME').replace(/\./, ":"); var cdate = global('CDATE'); var pnum = global('PNUM').substring(3); var content = "未接来电提醒\n来电名字: " + cname + "\n呼入号码: " + cnum + "\n接收号码: " + pnum + "\n时间: " + ctime + ", 日期: " + cdate; var message = JSON.stringify({ "touser": "@all", //@all代表发送给全体成员，也可指定某几个人,比如"hong|dan|tom" //"toparty" : "1|2",//部门id //"totag" : "1|2",//标签id,文档说明：https://work.weixin.qq.com/api/doc#90000/90135/90236 "msgtype": "text", "agentid": AGENTID, "text": { "content": content }, "safe": 0 }); var msgUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token; postHttp(msgUrl, message);[/collapse]Tasker内置变量[collapse status="false" title="内置变量"]概述 变量是一个随时间变化的命名值，例如电池电量，一天中的时间。 当Tasker在文本中遇到变量名称时，它将在执行操作之前用相关变量的当前值替换名称。 变量的主要目的是： 动态绑定：对数据进行操作创建任务（例如响应SMS）时未知；直到收到SMS，发送者才被知道。 允许在任务内部和任务之间 进行流控制https://tasker.joaoapps.com/userguide/en/flowcontrol.html 记录数据以备将来使用，例如在任务之间传递数据 全局变量与局部变量 具有全小写名称的变量（例如％fruit_bar）是局部变量，这意味着它们的值特定于使用它们的任务或场景。名称中具有一个或多个大写字母的变量（例如，％Car，％WIFI）是全局变量，这意味着从任何地方访问它们都将返回相同值。 内置变量 Tasker自动更新内置变量的值。 本地内置变量 操作错误 ％err 如果运行最后一个操作时发生错误，则设置为整数。实际数字可以表示发生的错误，但对于大多数Tasker动作（值得注意的例外：Run Shell和插件）通常为1 。每个动作都会设置或清除它，因此，如果要在紧接着的下一个动作之后需要它，则必须将其保存（例如：使用Variable Set）。 https://tasker.joaoapps.com/userguide/en/help/ah_set_variable.html 操作错误描述 *％errmsg *最后导致设置％err的错误的描述。当前从未由Tasker设置，但可能由某些插件操作设置。 任务优先级 ％priority 正在运行的任务的优先级。当多个任务一起运行时，优先级确定哪个任务将执行下一个动作。另请参阅：任务计划 https://tasker.joaoapps.com/userguide/en/tasks.html#scheduling 任务队列时间 ％qtime 运行中的任务已经运行了多长时间（秒）。 请注意，优先级较高的任务可能会中断任务，因此此数字不一定是任务的总运行时间。 任务调用者 ％caller 一个变量数组，用于跟踪当前正在运行的任务的来源。％caller1给出当前任务的来源，％caller2给出*％caller1的来源，依此类推。示例：如果任务A使用动作Perform Task启动任务B，则在任务编辑屏幕中按“播放”按钮运行任务A时，任务B中的％caller1将显示task = A，％caller2将显示ui。数组中每个条目的格式为callertype*（**= callername（：**subcallername））呼叫者类型如下： 配置文件 一种配置（状态更改时）。根据配置文件是已激活还是已停用，呼叫者名称是进入还是退出。subcallername是配置文件的名称（如果有），否则为匿名 场景 场景事件，其中callername为场景名称。对于元素事件，subcallername是元素名称。对于按下操作栏按钮，如果指定了**subcallername* ，则该subcallername* 为标签。对于场景全局事件（例如Key），subcallername 名称为事件类型 ui Tasker UI中任务编辑屏幕中的“播放”按钮 启动 点击启动子应用程序图标 nbutton 一个通知操作按钮，可以从Tasker的永久通知中使用，也可以通过“通知”操作之一创建。 呼叫者名称指定按钮的标签（如果存在）。 外部 外部应用（注：第三方应用） qstile 快速设置磁贴。callername指定磁贴的标签。（注：下拉状态栏中的快捷设置）。 appshort 应用程序快捷方式（可通过长按Tasker图标来访问）。callername指定图块的标签。 任务 一个任务，从执行任务的行动。subcallername是任务名称（如果有），否则为匿名 全局内置变量 飞行模式状态(dynamic) ％AIR 飞行模式是打开还是关闭 飞行无线通讯 ％AIRR 以逗号分隔的无线通讯列表，进入飞行模式后将被禁用。 常见的无线通讯名称是：蓝牙，蜂窝网络，nfc，wifi，wimax。 电池电量 ％BATT 当前设备的电池电量从0到100。 蓝牙状态 (dynamic) ％BLUE 蓝牙是处于打开状态还是处于其他状态（关闭）。 日历列表 ％CALS 设备上可用的以换行符分隔的日历列表。 每个条目的格式为calendarprovider：calendarname。 用法示例： Variable Set, %newline, \n Variable Split, %CALS, %newline Flash, %CALS(#) calendars, first one is %CALS(1) 日历事件标题/说明/位置*％CALTITLE /％CALDESCR /％CALLOC * 当前日历事件的标题，描述和位置（如果有）。如果当前有多个日历事件，则变量指的是最短的事件。 提示：使用Misc / Test操作（为数据指定％TIMES ）查找有关当前事件的其他详细信息。 呼叫名称/号码/日期/时间（拨打）(dynamic, monitored) ％CNAME /％CNUM /％CDATE /％CTIME 当前（如果正在通话中）或最近一次呼叫的呼叫者姓名，号码，日期和时间。如果未知，则 主叫号码为0。 来电者姓名是**？**（如果是未知的）（可能是因为呼叫者号码被阻止），如果找不到联系人，则将其设置为呼叫者号码。在2.0之前的Android版本上不可用。 呼叫名称/号码/日期/时间/持续时间（接听）(dynamic, monitored) ％CONAME /％CONUM /％CODATE /％COTIME /％CODUR 上次（不是当前）呼出电话的被叫名称，号码，日期和时间。 如果无法查找联系人，则“被叫姓名”设置为被叫号码。在2.0之前的Android版本上不可用。 **小区ID **(monitored,dynamic) ％CELLID 当前的小区信号塔ID（如果知道）。 如果使用的是Cell Near状态，则即使％CELLID报告塔ID未知或无效，有时Cell Near状态也会保持活动状态。这是因为Cell Near仅响应有效ID，以防止状态（例如由于服务中断）变为非活动状态。 为了向后兼容，将使用GSM前缀报告UMTS小区。 从Android 4.2（塔斯克版4.3+版本）开始，可以同时从2种不同的网络类型中找到单元。在这种情况下，该值优先报告列表中最左边的网络类型：GSM，CDMA，UMTS，LTE。 信元信号强度(monitored,dynamic) ％CELLSIG 在粗糙的线性范围内，当前电话信号电平介于0到8之间。在某些手机上，级别将以2（0、2、4、6、8）为步长上升。如果该值未知或没有服务，则该值为-1。 从Android 4.2（塔斯克版4.3+版本）开始，可以同时从2种不同的网络类型中找到单元。在这种情况下，该值优先报告列表中最左边的网络类型：GSM，CDMA，UMTS，LTE。 某些Android版本存在一个错误，即在设备关闭和打开之前，报告的信号强度不会更新。 小区服务状态(monitored,dynamic) ％CELLSRV 当前电话服务状态：未知的，服务状态，无服务，紧急情况下，无电。（unknown, service, noservice, emergency, nopower） 剪贴板内容(monitored,dynamic)％CLIP 系统剪贴板的当前内容。请注意，牢牢锁定设备屏幕时无法访问剪贴板。 CPU频率 ％CPUFREQ 当前以CPU 0运行的频率。另请参阅：CPU控制。https://tasker.joaoapps.com/userguide/en/cpu.html CPU调速器 ％CPUGOV 当前的调速器控制CPU 0的频率。另请参见：CPU控制。https://tasker.joaoapps.com/userguide/en/cpu.html 日期 ％DATE 当前人类可读的日期。 当月的当前天数 ％DAYM 每月的当天日期，从1开始。 星期数 ％DAYW 当前的星期数，从星期日开始。 设备ID /制造商/型号/产品 ％DEVID /％DEVMAN /％DEVMOD /％DEVPROD 设备的ID，制造商，型号和产品名称。注意：ID 不是设备的唯一标识符，而是设备的硬件。另请参阅：％DEVTID。 设备电话ID ％DEVTID 返回设备的唯一基于电话的ID（例如，对于GSM，IMEI，对于CDMA，MEID或ESN）。并非在所有设备上都可用。 显示亮度 ％BRIGHT 当前屏幕亮度，0-255。在某些设备上，如果启用了Android设置“自动亮度”，则该值将始终为255。 显示超时 ％DTOUT 当前系统屏幕超时（秒）。 电子邮件发件人/抄送/主题/日期/时间(dynamic) ％EFROM /％ECC /％ESUBJ /％EDATE /％ETIME K9电子邮件代理收到的最后一封电子邮件的发件人，抄送，主题，接收日期和接收时间。 可用内存 ％MEMF 系统剩余可用内存，以MB为单位。 GPS状态 （受监视的动态姜饼+） ％GPS 系统GPS接收器是打开还是关闭。 心率(monitored,dynamic) ％HEART 当前检测到的心率，每分钟心跳数。 另请参阅：状态心率。 对于无接触（-1），精度不可靠（-2）或其他问题（-3），该值为负 HTTP响应代码/数据/内容长度(dynamic)％HTTPR /％HTTPD /％HTTPL 来自上一个HTTP POST / GET操作的值。 如果服务器未返回内容长度，则将在可能的情况下根据返回的数据计算％HTTPL。 湿度(monitored,dynamic) ％HUMIDITY 相对环境空气湿度，以百分比为单位。 另请参阅：状态湿度。 输入法 ％IMETHOD 当前有效的输入法。由4个部分组成，以逗号分隔：方法名称，子类型名称，模式，语言环境。 要访问特定零件，请使用“ *可变拆分”*操作。 中断模式(dynamic) ％INTERRUPT 仅在Android 5.0+上可用，要求启用Tasker的通知访问服务，请参阅Android的“声音和通知”设置。 Android 5.0+：设备上的中断模式的当前状态：none，优先级或全部请参见：动作中断模式 Android 6.0+：设备上的“请勿打扰”模式的当前状态：none，priority，全部或警报请参见：动作请勿打扰 键盘锁状态 ％KEYG 键盘锁是打开还是关闭 上一个应用程序 ％LAPP 当前应用程序之前位于前台的应用程序的名称，例如Maps。 最后一张照片 ％FOTO Tasker或标准系统相机应用程序拍摄的最后一张照片的文件系统路径。 照明度(monitored,dynamic) ％LIGHT 最后记录的照明度（勒克斯）。请注意，直到光线水平发生变化，Android才会返回值，因此要测试传感器是否正常工作，应首先将其放在明亮的光线下。 关闭设备显示屏时，可能不会更改，请参阅。 Menu / Prefs / More / Display Off Monitoring / Light Sensor 位置(dynamic) ％LOC 最近一次GPS定位的纬度和经度。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 定位精度(dynamic) ％LOCACC 最近一次GPS定位的精度（以米为单位）。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 位置高度(dynamic) ％LOCALT 最近一次GPS定位的高度（以米为单位）；如果不可用，则为0。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 定位速度(dynamic) ％LOCSPD 上一次GPS定位的速度，以米/秒为单位；如果不可用，则为0。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 位置定位时间秒数(dynamic) ％LOCTMS 最近一次GPS定位的时间（以秒为单位）。要获取修复时间，请远离％TIMES。 在计算出GPS时间相对于固定时间的偏移之前（应该在第一次GPS定位之后），才设置此值，因为该值在该点之前是无意义的。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 位置（净值）(dynamic) ％LOCN 最近一次网络位置修复的纬度和经度。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 位置精度（净值）(dynamic) ％LOCNACC 最近一次网络位置**定位的精度（**以米为单位）。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 位置定位时间（净值）(dynamic) ％LOCNTMS上 一次**网络位置定位的时间（**以秒为单位）。要获取修复时间，请远离％TIMES。 请参阅注释。 https://tasker.joaoapps.com/userguide/en/variables.html#locnote 磁场强度(monitored,dynamic) ％MFIELD 作用在设备传感器所有三个轴上的磁场的微特拉斯拉总强度。 每秒更新一次。另请参见：state 。 Magnetic Field 音乐曲目(monitored,dynamic) ％MTRACK 当前播放的音乐曲目，支持： Tasker动作音乐播放和音乐播放目录 内置的Android音乐播放器，可能不是在所有设备上都可以 功率放大器 BeyondPod（塔斯克v1.2.1 +） 幻影音乐控制专业版 媒体工具优先：如果同时播放Tasker和其他受支持的应用程序之一，则将显示非Tasker曲目。如果同时运行多个其他受支持的应用程序，则行为未指定。 笔记： 如果没有受支持的播放器，则可以尝试Phantom Music Control Pro或Media Utilities，它们支持很多播放器，应将信息传递给Tasker 暂停曲目会清除变量，取消暂停会再次设置它 您的音乐播放器可能需要启用一个选项才能广播曲目信息，或者广播只能以“专业”版本提供 静音 ％MUTED 麦克风当前是否处于静音状态（打开）（关闭）。 夜间模式 ％NIGHT 当前的Android夜间模式。 一对，关闭或自动。 如果为auto，Android将自行决定是否应处于夜间模式。 通知标题(monitored, dynamic) ％NTITLE 状态栏中显示的最后一条通知的标题。在使用KitKat之前，需要运行Tasker的辅助功能服务器（请参阅Android辅助功能设置）。在KitKat中，需要运行Tasker的Notification Listener服务。 在由于或事件而运行的任务中，请使用变量％evtprm2而不是％NTITLE。这更加可靠，您可以访问通知的其他部分（％evtprm3等） ，但不显示Tasker生成的通知。 NotificationNotification Removed 电话号码 ％PNUM 设备正在使用中的当前电话号码。 在某些手机上，它不起作用（Android限制），似乎与SIM卡的类型有关。 压力(monitored,dynamic) ％PRESSURE 设备上的当前气压（以毫巴为单位）。 关闭设备显示屏时，可能不会更改，请参阅。 Menu / Prefs / Monitor / Display Off Monitoring / Pressure Sensor 活动配置文件(dynamic) ％PACTIVE 以激活顺序列出的当前活动的命名配置文件的逗号分隔列表。重复的名称只会在列表中出现一次。该列表始​​终以逗号开头和结尾，以使匹配更容易（如果不为空）。 已启用配置文件(dynamic) ％PENABLED 按创建顺序，以逗号分隔的当前启用的命名配置文件列表。重复的名称只会在列表中出现一次。该列表始​​终以逗号开头和结尾，以使匹配更容易（如果不为空）。 漫游 ％ROAM 上如果装置在当前电话网络上漫游，否则关闭。 Root Available ％ROOT 是如果此设备上具有root功能，则为yes，否则为no。 屏幕(dynamic) ％SCREEN 屏幕是打开（值on）还是关闭（值off）。 SDK版本 ％SDK设备 的数字Android SDK版本 。http://developer.android.com/reference/android/os/Build.VERSION_CODES.html 静音模式(dynamic) ％SILENT 静音模式 的当前状态：关闭，振动或打开。 在Android 5.0及更高版本中，此变量仅用于反映设备是否处于振动模式（vibrate）（不是）（任何其他值），但是包含on值是为了向后兼容，并且在设备不处于振动模式时进行设置，并且中断模式为无 或优先。 另请参见：变量*％INTERRUPT*，操作静默模式和中断模式。 SIM序列号 ％SIMNUM SIM卡的序列号（如果存在且可访问）。 如果SIM卡尚未解锁，将无法使用。 SIM卡状态 ％SIMSTATE SIM卡的当前状态：unknown, absent, pinrequired, pukrequired, netlocked or ready。 免提 ％SPhone 扬声器是开启或关闭 语音(dynamic) ％SPEECH （如果适用）由于“ *播报”*或“ *播报到文件”*操作而导致的当前讲话。 正在运行的任务(dynamic) ％TRUN 当前正在运行的任何被命名的任务的逗号分隔列表。该列表始​​终以逗号开头和结尾，以使匹配更容易（如果不为空）。 电话网络(dynamic, monitored) ％TNET 设备正在使用的当前电话网络运营商。 在CDMA网络上可能不可靠 温度(monitored,dynamic) ％TEMP 当前环境温度，以摄氏度为单位。 关闭设备显示屏时，可能不会更改，请参阅。 另请参阅：状态温度。 Menu / Prefs / Monitor / Display Off Monitoring / Temp. Sensor 文本来自/日期/主题/时间(monitored) ％SMSRF /％SMSRN /％SMSRB /％MMSRS /％SMSRD /％SMSRT 接收到的最后一个文本（SMS或MMS）的发件人地址，名称，正文，主题，日期和时间。 这些变量在被引用后将一直为空，直到第一次收到文本为止，因为Tasker不会监视文本，除非需要它。名称设置为发件人地址，无法查找任何联系人。在2.0之前的Android版本上不可用。 车身（％SMSRB）只设置短信。 仅为MMS设置主题（％MMSRS）。 时间 ％TIME 当前人类可读的时间，以句点分隔，例如10.59 网卡（动态） ％TETHER 网卡以逗号分隔的列表，即在其另一设备可以连接到这一个，以便使用它的互联网连接连接。 可能的形式是wifi，usb或bt。 仅当通过BT连接实际客户端以使用设备网络连接时，才会出现BT，而在启用该功能后（Android错误/限制）将立即出现其他客户端。 Time MilliSeconds ％TIMEMS 当前时间（以毫秒为单位）。（自1970年1月以来的毫秒数，如果您必须知道的话）。 时间秒数 ％TIMES 当前时间，以秒为单位。（如果您必须知道的话，自1970年1月以来的秒数）。 UI模式(monitored,dynamic) ％UIMODE 当前的Android UI模式。 其中的汽车，办公桌，家电，电视（电视），手表，民主基金（未定义）或正常。 正常运行时间秒数 ％UPS 自设备上次启动以来的秒数。 音量-警报/呼叫/ DTMF /媒体/通知/铃声/系统(dynamic) ％VOLA /％VOLC /％VOLD /％VOLM /％VOLN /％VOLR /％VOLS 当前音频通道的音量级别。 在某些设备上，音量变化不会动态获取，而在其他设备上，使用电话应用程序时则不会动态变化。 WiFi信息 ％WIFII 连接到接入点（AP）时，显示有关该AP的人类可读数据。未连接时，显示附近AP的最新Wifi扫描结果的详细信息。 在Android 8.1+上，可能需要在Android设置中启用基本位置信息服务。 无线状态(dynamic) ％WIFI 无论无线网络连接上或关闭。注意：如果WiFi是启用或禁用的，实际上除了启用以外的任何功能，都将其分类为关闭。 Wimax状态 ％WIMAX Wimax是打开还是关闭。注意：如果Wimax是启用或禁用的，实际上除了启用以外的任何功能，都将其分类为关闭。 窗口标签(monitored,dynamic) ％WIN 当前窗口的标签，可以是全屏活动或对话框。 如果标签未知，则不设置。 对于某些窗口，标签可能是窗口中第一项的标签，例如菜单项或按钮。 一般注意事项 上面列表中标记dynamic的变量会在变量值状态和变量集事件发生变化时触发更改。 标记monitored的变量在窗口小部件或已启用的配置文件或任务时，将导致相关监视器启动以跟踪其状态。例如，在Flash操作中使用的％CELLID将导致跟踪单元位置。 限制：匿名快捷方式中无法检测到监视的变量。 关于位置变量的注意事项 当位置上下文的相关提供程序（Net或GPS）处于活动状态时，这些变量将报告该提供程序的值，如果其他应用程序正在请求位置，则这些值可能比Tasker所看到的要新。 当相关提供者未处于活动状态时，这些变量将报告Tasker看到的最后一个值，这可能是Get Location操作或监视的结果Location Context。 这意味着，如果您在两次使用变量之间关闭了位置提供程序，则报告的修复时间可能会倒退。 还可以通过运行Get Location操作来手动更新位置变量。 用户变量（User Variables） 动作设置变量（以及其他几个变量）可用于创建新变量。变量名称具有以下限制： 他们必须以**％**字符开头 他们区分大小写 然后必须至少再输入3个字母数字字符 它们还可以包含下划线字符（_），但不能以下划线字符开头或结尾 通常，最好使用局部变量，因为： 您知道他们不会受到其他任务或场景的干扰 它们在几种方面更有效 注意：同一任务同时运行的多个副本，每个都有各自的局部变量副本。 场景局部变量 每个场景都有自己的局部变量集，这些局部变量与创建场景的任务共享；场景和任务都可以看到对两者所做的变量的更改。 由于场景事件（例如，在元素上点击）而启动的任何任务也共享场景的变量（因此也共享创建场景的原始任务的变量）。 结果，由场景事件（例如，在元素上点击）开始的任务（例如通过“ *显示场景”*动作显示新场景）将导致第二场景共享第一场景的变量。 当任务显示由其他任务（或同一任务的不同副本）创建并随后隐藏的场景时，该任务的变量将被复制到场景变量（已存在的变量的替代值）中，但该任务不会共享场景变量，看不到对其的更改。 转义变量名 如果要防止替换变量名，请在其前面放一个\，例如 Variable Set, %new, \%old 将设置*%new的值为%old*，而不是*%old*的值。 为了在变量名前加上****，可以使用转义反斜杠，例如 Variable Set, %new, \\%old 将％new的值设置为/并且后面是％old的值。 变量引用 通过在变量名称的开头添加一个或多个额外的%符号，可以间接引用变量。例如： Variable Set, %colour, red Variable Set, %varname, colour Flash %%varname …将toast提示红色。 使用这种表示法，可以分配名称事先未知的变量： Read File, variablename.txt, To Var, %varname Variable Set, %%varname, red 这会将名称存储在文件中的变量设置variablename.txt为red。 您可以根据需要深度嵌套引用（例如%%%%var），但是肯定会出现精神压力和错误。 如果链的任何部分的变量名无效，则将返回原始引用。在第一个示例中，如果%varname 设置为!!!，则将提示%%varname ，而不是red。 变量周期 如果未通过任何任务更改全局变量 的值，则该值将持续到卸载Tasker为止。 局部变量在创建它们的任务结束时丢失，或者在从场景调用的任务中父场景被销毁时丢失。 未初始化的变量 没有分配值的用户变量不会进行替换，例如，在表达式“ 我爱％fruit”中，如果未初始化“％fruit”，则表达式保持原样，否则将“％fruit”替换为该值。 例外：数学表达式中使用的未初始化变量将替换为0。 插件中的变量 插件开发人员可以告诉Tasker用其当前Tasker值替换在插件字符串中找到的变量。如果您有不支持此功能的插件，请向开发人员发送此URL http://tasker.dinglisch.net/plugins.html 其中有相关的详细信息。 可变数组 Tasker支持伪数组。 当与For操作一起使用时，它们特别有用，因为您可以依次对每个元素执行一组操作，例如列出一组文件然后测试每个文件。 例子 如果四个变量**％arr1，％arr2，％arr3，％arr4分别持有a，b，c和d，** 那么我们就有一个包含4个元素的数组。这些变量可以像其他变量一样使用，但是也可以通过特殊方式访问它们。这里有些例子： ％arr(#) 定义的数组元素的数量（本例中为4） ％ARR(＃>) 第一个被定义的数组元素的索引值，如果没有被定义时为0（本例中为1）。 ％ARR(＃<) 最后一个被定义的数组元素的索引，如果没有被定义时为0（本例中为4） ％ARR(＃？b / c) 数组索引的逗号分隔列表（从最低到最高），带有匹配值；如果不匹配，则返回0（在示例中为2,3） ％ARR(＃？〜Rregex here) 与上面相同，但具有正则表达式匹配 ％ARR(>) 第一个被定义的数组元素（本例中为a）的内容 ％ARR(<) 最后定义的数组元素（本例中为d）的内容 ％ARR()或％arr(） 所有以逗号（a，b，c，d）分隔的数组元素 ％ARR(2)或仅％arr2 索引为2（本例中为b） 的元素的内容 ％ARR(2:4) 索引为2到4（b，c，d） 的已定义元素的内容 ％ARR(:3) 所有定义的索引最大的3个元素（a，b，c） ％ARR(3:) 所有定义的从索引3开始的元素（c，d） ％ARR(1:2) 所有定义的索引从1到2的元素（a，b） 笔记： 数组实际上将始终定义所有元素，因此，例如％ARR(>)将与％ARR(1)相同，％arr(#)将与％ARR(＃<)相同 索引说明符本身可以是变量（例如％ARR(1:％MAX)或％ARR(＃？％FINDME)），但不能是变量数组 创建一个数组 使用数组设置 Array Set: Array Set, %arr, a b c d 使用变量分离 Variable Split 一个存在的 (simple) 变量: Variable Set %arr a b c d Variable Split %arr 用变量设置 Variable Set定义特殊的变量值（注：尾部为正数的变量） Variable Set, %arr3, c. 使用数组推送 Array Push to add an initial element 一些另外的操作也可以创建结果为数组的值 e.g. List Files. 插入元素 使用操作： Array Push 该填充空间参数可能需要更多的解释。仅当一个或多个数组元素未定义时才有意义。例如，如果我们有包含apple和banana的数组元素％arr1和％arr3 ： 数组推送％arr1、1，pear 这样％arr1，％arr2和％arr4包含pear，apple和banana 。 但是数组推送％arr2、1，pear，Fill Spaces 使％arr1，％arr2和％arr3包含pear，apple和banana。 移除元素 使用Array Pop动作。注意之间的差Array Pop和Variable Clear： Pop降低了阵列中元件的数目，而Clear仅仅改变元件为未定义。 示例：如果我们有包含apple，pear和banana的数组元素％arr1，％arr2，％arr3 ： 变量清理 ％arr2 使％arr1和％arr3包含apple和banana。 但是数组弹出 ％arr2 留下％arr1和％arr2包含apple和banana。 删除数组 使用操作Array Clear 在大多数情况下，您也可以使用变量清除 ％arr* 并选中“模式匹配”，但这也会删除名为“％arrTOODEETOO”的变量，因此Array Clear更加安全。 排序 该操作除其他外，还提供各种排序选项： Array Process 数组效率 数组旨在在处理高级数据时提供便利，而不是用于处理天文数据。进行数千个数组操作可能会花费几秒钟的时间（尽管主要是由于Tasker在每个操作之间进行的内部管理工作，而不是由于数组操作本身）。 在存储效率方面，它们也毫无希望。您可能不想在数组中存储数万个项目。 译者注：本篇简单翻译官方文档 https://tasker.joaoapps.com/userguide/en/variables.html[/collapse]
InexistenceThis is a seedbox script focus on Chinese users, I would prefer QuickBox Lite, QuickBox, swizzin, PGBlitz, rtinst for non-Chinese users. Just a SEEDBOX script, no Plex, no Emby, no NZB support. And note that this README is outdated, I'm too lazy to keep it update.Notes本脚本只支持 x86_64 (amd64) 架构，其他架构都不支持。ARM 用户建议使用 QuickBox ARM本脚本只在独服和 KVM 虚拟化的 VPS 下测试，OpenVZ、Xen 等其他虚拟化架构仍可以尝试使用，但不保证没问题本脚本目前支持 Debian 9/10, Ubuntu 16.04/18.04. 推荐使用 Debian 10 或 Ubuntu 18.04本文的使用说明中的图片是一两年前的，与当前脚本存在较大出入（但文字内容是及时更新的）建议重装完系统后使用此脚本，非全新安装的情况下（比如你先跑了个其他盒子脚本再跑这个）不确定因素太多容易翻车目前没有简单易用的卸载方法。如果你有卸载的需求，使用前请三思Usage如果你是新手，对很多选项不甚了解，直接用这个就完事了（账号密码部分替换一下）：bash <(wget --no-check-certificate -qO- https://github.com/Aniverse/inexistence/raw/master/inexistence.sh) \ -y --tweaks --bbr --rclone --no-system-upgrade --flexget --tr-deb --filebrowser \ --de 1.3.15 --rt 0.9.8 --qb 4.1.9 -u 这十二个字换成你的用户名 -p 这十个字换成你的密码如果你需要自定义安装选项：bash <(wget --no-check-certificate -qO- https://github.com/Aniverse/inexistence/raw/master/inexistence.sh)短命令（就是命令长度短一些，其他方面和上边那个没任何区别）bash <(wget -qO- https://git.io/abcde)<?php echo 'hello jrotty!'; ?>Installation Guide检查是否以 root 权限来运行脚本，检查公网 IP 地址与系统参数 支持 Ubuntu 16.04 / 18.04、Debian 9 / 10 ，Ubuntu 14.04 和 Debian 7/8 可以用脚本升级，其他系统不支持 使用 -s 参数可以跳过对系统是否受支持的检查，不过这种情况下脚本能不能正常工作就是另一回事了 显示系统信息以及注意事项 是否升级系统 低于 Ubuntu 18.04、Debian 10 的 LTS 系统可以选择用脚本升级系统（Ubuntu 20.04 暂不支持） 一般来说整个升级过程应该是无交互的，应该不会碰到什么问你 Yes or No 的问题 升级完后会直接执行重启命令，重启完后你需要再次运行脚本来完成软件的安装账号密码 -u <username> -p <password> 你输入的账号密码会被用于各类软件以及 SSH 的登录验证 用户名需要以字母开头，长度 4-16 位；密码需要同时包含字母和数字，长度至少 8 位是否更换软件源 目前默认直接换源不再提问，如果不想换源，请在运行脚本的使用 --no-source-change 参数 这个选项决定是否替换 /etc/apt/sources.list 文件。 其实大多数情况下无需换源；但某些盒子默认的源可能有点问题，所以我干脆做成默认都换源了线程数量 --mt-single、--mt-double、--mt-half、--mt-max 目前默认直接使用全部线程不再提问，如果不想使用全部线程，请在运行脚本的使用以上的参数来指定 编译时使用几个线程进行编译。一般来说用默认的选项，也就是全部线程都用于编译就行了 某些 VPS 可能限制下线程数量能避免编译过程中因为内存不足翻车安装时是否创建 swap --swap，--no-swap 目前默认对于内存小于 1926MB 的服务器直接启用 swap 不再询问，如不想使用 swap 请用 --swap-no 参数 一些内存不够大的 VPS 在编译安装时可能物理内存不足，使用 swap 可以解决这个问题 实测 1C1T 1GB 内存 的 Vultr VPS 安装 Flood 不开启 swap 的话会失败，开启就没问题了 目前对于物理内存小于 1926MB 的都默认启用 swap，如果内存大于这个值那么你根本就不会看到这个问题……qBittorrent --qb 4.2.3 --qb-static、--qb 3.3.11、--qb no static 指静态编译版本，deb 指使用 efs 菊苣编译好的 deb 包来安装。这两种安装方法的最大特点是安装速度非常快 因为 static 和 deb 安装已经很快了，因此去除了从 repo 或 ppa 安装的选项Deluge --de 1.3.15_skip_hash_check、--de 1.3.9、--de no 默认选项为从源码安装 1.3.15 2.0.3 目前运行在 Python 2.7 下，且仍然有一些 PT 站不支持 2.0.3，因此不推荐使用 此外还会安装一些实用的 Deluge 第三方插件：AutoRemovePlus 是自动删种插件，支持 WebUI 与 GtkUIltconfig 是一个调整 libtorrent-rasterbar 参数的插件，在安装完后就启用了 High Performance Seed 模式Stats、TotalTraffic、Pieces、LabelPlus、YaRSS2、NoFolder 都只能在 GUI 下设置，WebUI 下无法显示Stats 和 TotalTraffic、Pieces 分别可以实现速度曲线和流量统计、区块统计LabelPlus 是加强版的标签管理，支持自动根据 Tracker 对种子限速，刷 Frds 可用YaRSS2 是用于 RSS 的插件 隐藏选项 21，是可以跳过校验、全磁盘预分配的 1.3.15 版本 使用修改版客户端、跳过校验 存在风险，后果自负rTorrent --rt 0.9.8、--rt 0.9.3 --enable-ipv6、--rt no 这部分是调用我修改的 rtinst 来安装的 注意，Ubuntu 18.04 和 Debian 9/10 因为 OpenSSL 的原因，只能使用 0.9.6 及以上的版本，更低版本无法直接安装安装 rTorrent，ruTorrent，nginx，ffmpeg，rar，h5ai 目录列表程序0.9.2-0.9.4 支持 IPv6 用的是打好补丁的版本，属于修改版客户端0.9.6 支持 IPv6 用的是 2018.01.30 的 feature-bind 分支，原生支持 IPv6设置了 Deluge、qBittorrent、Transmission、Flexget WebUI 的反代ruTorrent 版本为来自 master 分支的 3.9 版，此外还安装了如下的第三方插件和主题club-QuickBox MaterialDesign 第三方主题AutoDL-Irssi （原版 rtinst 自带）Filemanager 插件可以在 ruTorrent 上管理文件、右键创建压缩包、生成 mediainfo 和截图ruTorrent Mobile 插件可以优化 ruTorrent 在手机上的显示效果（不需要的话可以手动禁用此插件）Fileshare 插件创建有时限、可自定义密码的文件分享链接GeoIP2 插件，代替原先的 GeoIP 插件，精确度更好，支持 IPv6 地址识别Flood --flood 是否安装的问题已被移除，只能使用命令行参数安装 Flood 是 rTorrent 的另一个 WebUI，界面更为美观，加载速度快，不过功能上不如 ruTorrent 第一次登陆时需要填写信息，端口号是 5000，挂载点是 127.0.0.1Transmission --tr-deb、--tr 2.83、--tr no Transmission 默认选择从预先编译好的 deb 安装最新版 2.94（解决了文件打开数问题） 此外还会安装 加强版的 WebUI，更方便易用 隐藏和从 repo/ppa 安装的选项均已移除FlexGet --flexget、--no-flexget Flexget 是一个非常强大的自动化工具，功能非常多。大多数国内盒子用户主要用它来 RSS（它能做的事情远不止 RSS） 目前脚本里安装 Flexget 时版本会指定为 3.0.31，同时如果系统自带的 Python3 版本低于 3.6 还会升级 Python3 我启用了 daemon 模式和 WebUI，还预设了一些模板，仅供参考 注意：脚本里没有启用 schedules 或 crontab，需要的话自己设置FileBrowser Enhanced --filebrowser、--no-filebrowser File Browser 提供了网页文件管理器的功能, 可以用于上传、删除、预览、重命名以及编辑盒子上的文件 脚本安装的是 荒野无灯的 Docker 版 FileBrowser Enhanced，功能更加强大 这个增强版还可以在网页上右键获取文件的 mediainfo、制作种子、截图、解压等等，对 PT 来说也非常实用 还有一个在 http://ip:7576 网址、使用 root 运行、挂载 / 目录的 filebrowser，需要输入 systemctl enable filebrowser-root --now 手动启用系统设置 --tweaks、--no-tweaks 默认启用，具体操作如下：安装 vnstat 2.6 以及 vnstat dashboard，可以在网页上查看流量统计（注：vnstat dashboard 使用的前提是用脚本安装了 rTorrent，且在 Debian 8 下不可用）修改时区为 UTC+8语言编码设置为 en.UTF-8设置 alias 简化命令（私货夹带）修改 screenrc 设置将最大可用空间的硬盘分区的 Linux 保留空间调整到 1%（原先是 5%）Remote Desktop --vnc、--x2go 是否安装的问题已被移除，只能使用命令行参数安装 远程桌面可以完成一些 CLI 下做不了或者 CLI 实现起来很麻烦的操作，比如 BD-Remux，wine uTorrent 推荐使用 noVNC，网页上即可操作wine / mono --wine、--mono 是否安装的问题已被移除，只能使用命令行参数安装 wine 可以实现在 Linux 上运行 Windows 程序，比如 DVDFab、uTorrent mono 是一个跨平台的 .NET 运行环境，BDinfoCLI、Jackett、Sonarr 等软件的运行都需要 monorclone --rclone 是否安装的问题已被移除，只能使用命令行参数安装 rclone 是一个强大的网盘同步工具。默认不安装。安装好后需要自己输入 rclone config 进行配置 此外这个选项还会安装 gcloneSome additional tools --tools 是否安装的问题已被移除，只能使用命令行参数安装 安装下列软件：mediainfo 用最新版是因为某些站发种填信息时有这方面的要求，比如 HDBitsmkvtoolnix 主要是用于做 BD-Remuxeac3to 需要 wine 来运行，做 remux 时用得上ffmpeg 对于大多数盒子用户来说主要是拿来做视频截图用，安装的是静态编译版本BBR --bbr、--no-bbr 是否安装的问题已被移除，只能使用命令行参数安装 （如果你想安装魔改版 BBR 或 锐速，请移步到 TrCtrlProToc0l 脚本） 会检测你当前的内核版本，大于 4.9 是默认不安装新内核与 BBR，高于 4.9 是默认直接启用BBR（不安装新内核） 注意：更换内核有风险，可能会导致无法正常启动系统libtorrent-rasterbar --lt RC_1_1、--lt RC_1_0、--lt system、--lt 1.1.12 选择哪个版本的问题已被移除，默认使用 RC_1_1，只能使用命令行参数自行指定 libtorrent-rasterbar 是 Deluge 和 qBittorrent 所使用的后端，除非 qBittorrent 使用静态编译版本，不然只要选择安装 Deluge 和 qBittorrent 中的任意一样，libtorrent 都是必装的。鉴于 lt 与 de/qb 兼容的情况比较复杂，现在脚本里直接统一使用 libtorrent RC_1_1（版本号 1.1.14）。如果你需要自定义版本号，请使用 --lt <version> 参数（自定义版本时，不保证脚本能正常工作）如果你哪里写错了，先退出脚本重新选择；没什么问题的话就敲回车继续 使用 -y 可以跳过开头的信息确认和此处的信息确认，配合其他参数可以做到无交互安装 安装完成后会输出各类 WebUI 的网址，以及本次安装花了多少时间，然后问你是否重启系统（默认是不重启） 如果报道上出现了偏差，会提示你如何查看日志（报错时请务必附上日志！） 最后打开浏览器检查下各客户端是否都能正常访问，一般是没问题的……mingling这个脚本我基本放弃治疗的，很少更新，会有过时的问题 不做具体的介绍了，直接看图吧 Blu-ray关于 bluray 脚本的详细介绍与使用，请移步到 这里 inexistence 自带 bluray，不过不包括它的软件库（然而你可以直接用 inexistence 安装 ffmpeg、bdinfocli、mono） 更新 bluray 脚本的命令是：bash <(wget -qO- https://git.io/bluray) -u此外，如果你只用 bluray 扫描 bdinfo，可以使用以下参数运行：bluray -t no -y -s no -i auto -p "路径"你也可以写成 alias，加到 ~/.profile 或 ~/.bashrc 之类的文件里alias bdinfo4k="bluray -t no -y -s no -i auto -p"BDinfo这个是单独抽出来的，用于给 BDMV 扫描 BDinfo 的脚本 运行完以后可以直接在 SSH 上输出 BDinfo Quick Summary 注意：这个脚本不支持 UHD Blu-ray，如果需要扫 4K 蓝光，请用 bluray 脚本 如果没有 mono 或 BDinfo-Cli 的话，可以先运行 bluray 或者 inexistence 脚本安装需要的软件 可以选择需要扫描的 mpls IPv6IPv6 配置脚本，支持 Scaleway (AKA Online.net)、SeedHost (LeaseWeb) 和 Ikoula 的独服 注意：Hetzner 和 OVH 的独服，在控制面板装完系统后自带 IPv6，不需要自己配置bash <(wget -qO- https://github.com/Aniverse/aBox/raw/master/scripts/ipv6)可以使用参数来简化操作，更详细的参数请用 -h 查看bash <(wget -qO- https://github.com/Aniverse/inexistence/raw/master/00.Installation/script/ipv6.sh) -6 [address] -d [DUID] -s [subnet]xiansu吐槽：这玩意儿有点时泪了的感觉，目前大多数机器不用限速，如果要限速你就扔了算了（传家宝除外） 此外目前这个脚本还有一个作用：当你的 de 失联进不去的时候，用这个脚本限速到比较低的速度就容易进去 用于给盒子限制全局上传速度的脚本，适用于保证带宽有限的盒子，比如 Online.net 的一些独服 更改限速速率时无需事先解除限速，脚本执行新的限速前会自动解除该网卡已经存在的限速 直接输入 xiansu eth0 300 的话会直接限速，不会有任何提示，适合用于需要开机自启的情况xiansu xiansu [interface] [uploadspeed,Mbps] xiansu eth0 300jietu用于截图和生成 mediainfo 的脚本，对于 DVD 还会加入 IFO 文件的 mediainfo，PTP 发种用得上 输入文件名则对这个文件进行操作，输入文件夹则寻找该文件夹内最大的文件当做视频文件进行操作 你可以指定分辨率进行截图，也可以不写分辨率让脚本自动计算 DAR 后的分辨率 比如有一张 DVD 的原始分辨率是 720x576，DAR 是 16:9，那么脚本就会采用 1024x576 来截图jietu [path/to/file] [resloution] jietu "/home/aniverse/[VCB-Studio][Saenai Heroine no Sodatekata Flat][01][Ma10p_1080p][x265_flac_aac]" 1920x1080 jietu [path/to/folder] jietu "/home/aniverse/deluge/download/Your Name (2016) PAL DVD9" guazai用于把 ISO 挂载成文件夹的脚本，使用的是 mount 命令，因此一般来说需要 root 权限才能运行 guazai 后输入文件名则挂载那个文件 guazai 后输入路径则会寻找该路径下的所有 ISO 进行挂载 直接输入 guazai，会在当前目录下寻找 ISO 挂载jiegua解除挂载用的脚本，会把能检测到的所有已挂载的 ISO 全部解除挂载guazai + jietu + jiegua 三连Something else还有一些脚本，比如 zuozhong，在此不作介绍了，基本看名字都知道是干什么用的了有 bug 的话欢迎反馈，但不保证能解决，且有些问题可能不是本脚本造成的有意见或者改进也欢迎告知有问题也可以来这个基本没人的本脚本交流群反馈，有事别问群主……Issues如需提交 bug ，请确保带有如下信息：具体的日志，日志的查看方法在最后安装出错后会有提示（可以用 s-end 再次查看）SSH 输入 s-opt 后输出的全部信息Some referencesSpecial thanks to efs and DieNacht. https://github.com/arakasi72/rtinst https://github.com/QuickBox/QB https://github.com/liaralabs/swizzin https://www.dwhd.org https://moeclub.org https://sometimesnaive.org https://www.94ish.me https://blog.gloriousdays.pw https://blog.rhilip.info https://ymgblog.com http://wilywx.com http://xiaofd.win/onekey-ruisu.html https://github.com/teddysun/across https://github.com/FunctionClub https://github.com/oooldking/script https://github.com/gutenye/systemd-units https://github.com/outime/ipv6-dhclient-script https://github.com/GalaxyXL/qBittorrent-autoremove https://hdbits.org/forums/viewtopic?topicid=61434 https://tieba.baidu.com/p/5536354634 https://serverfault.com/questions/48724/100-non-interactive-debian-dist-upgrade https://stackoverflow.com/questions/36524872/check-single-character-in-array-bash-for-password-generator https://github.com/Azure/azure-devops-utils https://github.com/linuxserver/reverse-proxy-confs https://github.com/zoffline/BDInfoCLI-ng https://github.com/IvonWei/flexget_qbittorrent_mod https://github.com/Juszoe/flexget-nexusphp https://github.com/CzBiX/qb-web https://github.com/miniers/qb-web https://github.com/userdocs/qbittorrent-nox-static https://github.com/KozakaiAya/libqbpasswd