因此,我通常不发布信息,而是花数小时在论坛上拖拉寻找答案-但我完全不知所措。
我想做什么:
真的很简单,我想要一个可以自动更改OnePlus 5上MAC地址的脚本,我已经拥有执行此操作所需的所有命令,并且可以轻松地手动完成操作,脚本,但是呢?哦,男孩...
我尝试过的事情:
这些是在termux中手动运行时可以给我所需结果的命令:
ip link set dev wlan0 down
macchanger --random wlan0
ip link set dev wlan0 up
现在我不使用IP链接集dev wlan0地址xx:xx:xx:xx:xx:xx:xx的原因是因为我必须输入一个地址,而macchanger可以自动生成该地址。 (我没有Unix-foo以编程方式生成MAC地址)。
所以我按时间顺序执行了以下操作:
1)使用这些命令在nano中创建脚本。
2)使用chmod + x changeMAC.sh使脚本可执行。
这在执行时会给出“访问被拒绝”错误消息。
3)首先尝试进入SU,然后执行脚本,由于在调用su时termux失去了环境,因此会出现“ macchanger”未找到的错误。因此,我安装了tsu包装器,该包装器允许您在维护环境的情况下调用tsu并获取su,相当于su --preserve-environment。
但是,这是我开始从桌子上撞头的地方。
如果我在termux终端中执行以下操作:
tsu
./changeMAC.sh
终端只是坐在那里,什么也不做。如果然后输入“ exit”并按回车键,则会收到三则“ Access Denied”错误消息。
我试图规避错误:
4)使用AutoInput像用户一样键入termux,但拒绝这样做。
5)直接从Tasker> Run Shell执行shell命令,但我怀疑这是行不通的,因为macchangeer软件包未安装在tasker shell的范围内。
6)直接使用su --preserve-environment,但同样的事情也会发生!
所以总结一下我的脚本如下:
\#!/data/data/com.termux/files/usr/bin/sh
sleep 1
ip link set dev wlan0 down
sleep 1
macchanger --random wlan0
sleep 1
ip link set dev wlan0 up
exit
但是:
1)不适用于标准特权
2)使用tsu / su --preserve-environment时似乎没有执行,当退出tsu实例时出现错误,尽管它的 waiting 等待实例在执行之前结束...
3)从tsu实例手动执行时工作正常。
我想我只是对Unix / Linux / Android的复杂性还不了解,所以无法理解为什么并因此对其进行纠正。
非常感谢您的帮助。
最好
H。
电话详细信息:
OnePlus 5,植根于Magisk
ElementalX内核
xXx NoLimits自定义ROM
编辑1:
我已经尝试过https://gitlab.com/st42/termux-sudo中的'sudo',但这需要su,然后找不到macchanger,我回到正题。
答案 0 :(得分:0)
我可以为您建议的最简单的解决方案是:
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
String[] env = {"PATH=/su/bin:/sbin:/system/sbin:/system/bin:/su/xbin:/system/xbin:/system/xbin/"};
DataOutputStream outputStream;
outputStream = new DataOutputStream(Runtime.getRuntime().exec("su", env).getOutputStream());
outputStream.writeBytes("ip link set dev wlan0 down && macchanger --random wlan0 && ip link set dev wlan0 up && exit \n");
outputStream.flush();
Toast.makeText(this, "Macchanger DONE", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Macchanger Error", Toast.LENGTH_SHORT).show();
}
}
它可以在Nexus 5 Rooter上运行,但是您必须明确地添加一个按钮来控制功能,为什么不打印新的Mac,您可以在这里找到:
cat /sys/class/net/NAME_INTERFACE/address