注册时间
最后登录
新帖
发布在 脚本发布 阅读更多

termux是一个功能很强大的命令行工具.唯一的不足之处就是.它不启动,通过它安装的一些服务就无法启动.
手动启动termux后,如果安装的服务多.还得手动敲命令去启动.比较麻烦.
从F-droid下载的版本,按照教程操作,不知道为什么.也实现不了打开termux后就启动已安装的服务的功能.有人说需要下载收费版的.反正我是不知道在哪下载收费版.

通过查看github上termux:boot的源码.发现termux:boot是通过intent方式启动一个termux的服务.那通过autojs去启动应该也是一样的效果.除非它进行验证......不过,并没有验证...

那下面通过两种方式来启动termux的服务.一种是root方法.另一种是免root方法

root的方法.比较简单.就是一条shell命令

需要注意的是,-d传递的 scheme中, 文件路径只允许修改末尾的文件名.

shell("am startservice -n com.termux/.app.TermuxService "+
    "-a com.termux.service_execute "+
    //-d参数中需要修改你自己的文件名.你只能修改文件路径结尾的文件名称.不得变更路径
    "-d com.termux.file:/data/data/com.termux/files/home/.termux/boot/bootsshd "+
    "-e com.termux.execute.background true", true);

以上的一条shell命令可以说是termux:boot使用的核心命令.你可以修改做成变种,启动多个boot下的文件,但是启动脚本的路径/data/data/com.termux/files/home/.termux/boot/ 不允许改变

免root的方式 测试需要root权限

免root方式就比较麻烦一点.
需要修改termux的AndroidManifest.xml文件.
使用MT管理器.查看termux的包,然后反编译方式打开androidManifest.xml. 跳转到129行
具体内容是:

<service
    android:name="com.termux.app.TermuxService"
    android:exported="false" />

将exported的值改为true

<service
    android:name="com.termux.app.TermuxService"
    android:exported="true" />

这里修改完成后.会生成一个新的apk包.这个包不能直接安装.需要重新签名或者去除签名.
MT管理器可以去除签名或者重新签名
搞定签名后,再安装即可.
安装好以后.使用下面的脚本.运行

importPackage(android.content);

importClass(android.net.Uri);

const TERMUX_SERVICE = "com.termux.app.TermuxService";
const ACTION_EXECUTE = "com.termux.service_execute";
const EXTRA_EXECUTE_IN_BACKGROUND = "com.termux.execute.background";
const BOOT_SCRIPT_PATH = "/data/data/com.termux/files/home/.termux/boot/services";

app.startActivity({
    packageName : "com.termux",
    className : "com.termux.app.TermuxActivity"
});
waitForActivity("com.termux.app.TermuxActivity");

var scriptUri = new Uri.Builder().scheme("com.termux.file").path(BOOT_SCRIPT_PATH).build();
var executeIntent = new Intent(ACTION_EXECUTE, scriptUri);
executeIntent.setClassName("com.termux", TERMUX_SERVICE);
executeIntent.putExtra(EXTRA_EXECUTE_IN_BACKGROUND, true);
context.startService(executeIntent);

★注意:
同样的 BOOT_SCRIPT_PATH 这个变量的值只允许修改最后一个文件的文件名.
也就是说.以上两种方法.都不可以修改启动脚本存放的路径.

  • 一个示例
    假如我们在打开termux的时候,希望启动sshd这个服务.
#首先安装openssh
$ pkg install openssh
#然后在家目录中创建文件夹
$ mkdir -p $HOME/.termux/boot
#创建启动服务的脚本文件
$ touch $HOME/.termux/boot/services
#将要启动的服务写入脚本文件
$ echo sshd >> $HOME/.termux/boot/services

以上的步骤执行完成后关闭termux.然后使用刚才的脚本来启动termux.

使用命令来验证一下.

#检查服务
$ ps -a |grep sshd
 4855 u0_a141   0:00 sshd
 4868 u0_a141   0:00 /data/data/com.termux/files/usr/bin/sshd -R
 5220 u0_a141   0:00 grep sshd
#检查端口 如果状态为 LISTEN 则说明8022端口已经打开
$ netstat -atn |grep 8022
tcp        0      0 0.0.0.0:8022            0.0.0.0:*               LISTEN

或者使用nmap来扫描一下自己的端口.看看8022是否开启

$ nmap localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-07 14:01 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0013s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
8022/tcp open  oa-system

好了 以上便是使用Autojs来替代termux:boot插件教程. 如果你想启动多个脚本文件.注意编写脚本的逻辑.
1.先启动termux
2.再启动boot/目录下的脚本

发布在 教程与示例 阅读更多

准备工作:

  • termux
    此处安装termux不建议安装酷安版本.请从F-droid里面下载,因为以后你可能会用到termux的插件,如果你从酷安安装的话.以后安装插件的时候会报 签名不一致 而无法安装成功.

配置环境:

  • 安装好termux后更新终端
    修改软件更新源,就不写了.自行百度
$ apt update
$ apt upgrade
  • 安装 Mariadb
$ pkg install mariadb

软件环境安装好以后,开始做一些必要的配置.也是踩了很多坑踩成功把mysql跑起来
需要创建一个文件夹

$ cd /data/data/com.termux/files/usr/etc/
$ mkdir my.cnf.d

文件夹创建好以后准备安装数据库

$ mysql_install_db

安装好以后.开始初始启动数据库服务

$ mysqld --user=root

第一次启动后.终端可能会卡死...不知道是手机的原因还是什么原因.我重启了一下终端.
启动mysql服务成功以后.需要初始化一下mysql

$ mysql_secure_installation

初始化数据库是需要你手动做一些选择
第一处暂停的地方

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none):

这里让你输入数据库的密码.因为我们是第一次安装.所以没有密码.直接按回车键

第二步:

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

 

Set root password? [Y/n] y

这里询问是否设置数据库用户 root 的密码, 当然要输入y
接下来输入两次密码

New password: 

Re-enter new password: 

Password updated successfully!

Reloading privilege tables..

 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y

这里询问是否删除匿名用户? 当然输入y 删除
继续下一步

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 

这里询问是否禁用root用户从远程登录?
如果你需要从远程登录到数据库就输入 n
如果你只从本机进行数据库管理就输入 y

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y

这里询问是否删除 test 数据库? 没什么用 输入y 删除吧

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y

这里询问是否重建权限表, 输入 y

 ... Success!

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

Cleaning up...

到这里,数据库就初始化完成

本机登录mysql

$ mysql -u root -p
Enter password:

输入你刚才设置的密码....

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 24
Server version: 10.3.11-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;

输入 show databases;
必须以 ; 号结尾

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.004 sec)

MariaDB [(none)]>

至此 termux安装数据库完成.

但此时如果使用Navicat等数据库管理工具链接的话.会爆 拒绝连接.原因是 root的登录方式为 loaclhost.这里需要修改一下.

使用命令:

  • use mysql; //更改所操作的数据库

  • update user set host='%' where host='localhost'; //更改host的值为% 条件是host等于localhost的这一条数据

  • flush privileges; //刷新用户权限表

MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
| 127.0.0.1 | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
| ::1       | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
+-----------+------+-------------------------------------------+
3 rows in set (0.001 sec)

MariaDB [mysql]> update user set host='%' where host='localhost';
Query OK, 0 rows affected (0.002 sec)
Rows matched: 0  Changed: 0  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.005 sec)

//最后查看一下修改后的 user 表
MariaDB [mysql]> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| %         | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
| 127.0.0.1 | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
| ::1       | root | *796D73744CD9F75E1C4FCF7C7F47E1668A99C125 |
+-----------+------+-------------------------------------------+
3 rows in set (0.002 sec)

完成以上操作,再在Navicat等管理工具上连接数据库时.即可正常连接了

发布在 一般交流 阅读更多

你也可以尝试 使用 html写界面啊...

发布在 一般交流 阅读更多

readlines(); 转成数组 然后获取数组长度

发布在 一般交流 阅读更多

你问的这个问题 ,还是挺白痴的

发布在 一般交流 阅读更多

你 while(true) 了 他能不死循环么,没有跳出动作

发布在 一般交流 阅读更多

这个东西 你应该自试试


与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待