1

У меня есть пара Antminer L3+ под управлением ОС Unix на базе программного обеспечения + cgminer. Он имеет защищенный паролем веб-интерфейс, например http://10.12.1.1/cgi-bin/reboot.cgi Я могу получить к нему доступ непосредственно из браузера, например, http://root:root@10.12.1.1/cgi-bin/reboot.cgi перезагрузить устройство.

Но когда я запускаю то же самое из терминала, например, curl http://root:root@10.12.1.1/cgi-bin/reboot.cgi я получаю ошибку 401.

Я также пытался использовать curl в PHP с params для имитации браузера, все еще получая ошибку 401.

Есть идеи, почему это может происходить?

2 ответа2

0

Спасибо Джей. Вот рабочий параметр для выполнения URL- адреса локальной сети cgi-bin, например http://root:root@10.12.1.1/cgi-bin/reboot.cgi из терминала или с помощью сценария PHP (вместо браузера). Это может быть выполнено из локальной или глобальной сети (через предварительно настроенный порт вашего брандмауэра / маршрутизатора).

Из WAN:

curl --digest --user 'username:password' http://YOUR_WAN_IP:PORT/cgi-bin/reboot.cgi

Из локальной сети

curl --digest --user 'username:password' http://YOUR_LAN_IP/cgi-bin/reboot.cgi

По сценарию PHP:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_URL, 'http://YOUR_WAN_IP:PORT/cgi-bin/reboot.cgi');
$output = curl_exec($ch);
$info = curl_getinfo($ch)
curl_close($ch);

print_r($output);
print_r($info);
0

Возможно, вы отправляете неверную авторизацию. Попробуйте --digest и если это не сработает, попробуйте --anyauth и используйте --verbose чтобы выяснить, какой из них работает, затем найдите правильный переключатель аутентификации в руководстве и используйте только этот (для безопасности).

Еще одна вещь, которую вы можете попробовать - включить куки. Некоторые маршрутизаторы устанавливают файлы cookie на 401 и ожидают, что эти файлы будут возвращены при следующем запросе. Вы можете читать и писать куки, используя --cookie cookies.txt --cookie-jar cookies.txt. Если вы не заботитесь о сохранении файлов cookie (например, перезагружаете маршрутизатор) и вам не нужно анализировать выходные данные, тогда --cookie-jar - достаточно, чтобы включить механизм файлов cookie и записать их в стандартный вывод.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .