Поэтому я обычно не пишу, вместо этого трачу часы на форумы в поисках ответа, но я в полной растерянности.
Что я хочу сделать:
На самом деле все очень просто, мне нужен скрипт, который автоматически изменит MAC-адрес на моем OnePlus 5, у меня уже есть все необходимые для этого команды, и я могу легко выполнить это вручную, получив скрипт для выполнения это однако? О, парень...
Что я пробовал:
Это команды, которые при запуске в termux вручную дают мне нужный результат:
ip link set dev wlan0 down
macchanger --random wlan0
ip link set dev wlan0 up
Теперь причина, по которой я не использую ip link set dev wlan0 address xx:xx:xx:xx:xx:xx, заключается в том, что тогда мне нужно ввести адрес, тогда как macchanger может сгенерировать его автоматически. (У меня нет Unix-foo для программной генерации MAC-адреса).
Итак, я сделал следующее в хронологическом порядке:
1) Создал скрипт в нано с этими командами.
2) Сделал скрипт исполняемым с помощью chmod +x changeMAC.sh
Это дает сообщение об ошибке «Отказано в доступе» при выполнении.
3) Попытался сначала войти в SU, а затем выполнить скрипт, это дает ошибку «macchanger», не найденную, поскольку termux теряет среду при вызове su. Поэтому я установил оболочку tsu, которая позволяет вам вызывать tsu и получать su с поддерживаемой средой, эквивалентной su --preserve-environment.
Однако именно здесь я начал биться головой о стол.
Если я сделаю следующее в терминале termux:
tsu
./changeMAC.sh
Терминал просто сидит и ничего не делает. Если я затем наберу «выход» и нажму «Ввод», я получу три сообщения об ошибке «Отказано в доступе».
Я пытался обойти ошибку:
4) Использование AutoInput для ввода в termux как пользователь, но он отказался это делать.
5) Выполнение команд оболочки непосредственно из Tasker > Run Shell, но я подозреваю, что это не работает, потому что пакет macchanger не установлен в области действия оболочки Tasker.
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, почти как если бы он ожидал завершения экземпляра перед выполнением ...
3) Отлично работает при выполнении вручную из экземпляра tsu.
Я думаю, что просто недостаточно знаю тонкости Unix/Linux/Android, чтобы понять, почему это не работает, и, следовательно, исправить это.
Любая помощь приветствуется.
Лучший,
H.
Детали телефона:
OnePlus 5, рутированный с помощью Magisk
Ядро ElementalX
xXx NoLimits Кастомное ПЗУ
Редактировать 1:
Я попробовал «sudo» с https://gitlab.com/st42/termux-sudo. однако для этого требуется su, который затем не может найти macchanger, и я вернулся к исходной точке.