Этому может быть много разных причин, в том числе производитель аппаратного обеспечения вашего телефона. В настоящее время я создал свою библиотеку Captive Portal для ОС Mongoose, отвечающую на все запросы DNS с IP-адресом устройства, и у меня нет проблем с устройствами, кроме устройств Samsung, которые, похоже, требуют ответа 200 с текстом.
Вот стек библиотеки :https://github.com/tripflex/captive-portal-wifi-stack
В частности, вот обработка Captive Portal, а также сведения об используемых мной конечных точках и сведения о том, как это обрабатывается в README:
https://github.com/tripflex/captive-portal
Вы увидите, что одно решение, которое я использовал для устройств Samsung, заключается в возврате 200 со сгенерированными HTML-файлами с использованием метатега обновления:
https://github.com/tripflex/captive-portal#cportalredirect_file-setting
Redirecting to Captive Portal
Please wait, refreshing. If page does not refresh, click here to login.
Но на самом деле главное было настроить обработку конечных точек для каждого конкретного устройства:
https://github.com/tripflex/captive-portal#known-endpoints
/mobile/status.php
Android 8.0 (Samsung s9+)/generate_204
Андроид /gen_204
Андроид /ncsi.txt
Окна /hotspot-detect.html
iOS/OS X /hotspotdetect.html
iOS/OSX /library/test/success.html
iOS /success.txt
ОС X /kindle-wifi/wifiredirect.html
Kindle при запросе с помощью com.android.captiveportallogin /kindle-wifi/wifistub.html
Kindle перед запросом с окном входа в авторизованный портал (, возможно, для обнаружения?)Не делайте этого или любой версии того, что вы пытаетесь сделать, но вы можете использоватьyes
:
$ yes 'password' | sudo -Su USER rm -f FILE
Вместо этого вы должны разрешить USER
доступ к sudo без пароля, изменив/etc/sudoers
(использование visudo
там, где доступно ), и добавив этого пользователя в требуемую группу.
Как запустить определенную программу от имени пользователя root без запроса пароля?
Не делай этого так.
Вы можете написать сценарий, а затем настроить sudo
(/etc/sudoers
), чтобы позволить вашему пользователю sudo
использовать его без пароля.
Вы также можете написать программу go
, а затем использовать suid
.