Acessando a página web cgi-bin do terminal

1

Eu tenho um par de Antminer L3 + executando o software OS + cgminer baseado em unix. Ele tem uma interface web protegida por senha, como http://10.12.1.1/cgi-bin/reboot.cgi . Eu posso acessá-lo diretamente de um navegador como este http://root:[email protected]/cgi-bin/reboot.cgi para reiniciar o dispositivo.

Mas quando eu executo o mesmo do terminal como curl http://root:[email protected]/cgi-bin/reboot.cgi , recebo o erro 401.

Eu também tentei usar curl em PHP com params para imitar um navegador, ainda recebendo erro 401.

Alguma idéia de por que isso pode estar acontecendo?

    
por Jsp 09.12.2017 / 00:12

2 respostas

0

Obrigado a Jay. Aqui está o parâmetro de trabalho para executar uma url LAN cgi-bin como http://root:[email protected]/cgi-bin/reboot.cgi do terminal ou por script PHP (em vez de navegador). Isso pode ser executado a partir da LAN ou WAN (através de uma porta pré-configurada no seu firewall / roteador).

Da WAN:

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

Da LAN

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

Por script 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);
    
por 09.12.2017 / 17:48
0

Provavelmente você está enviando a autorização errada. Experimente --digest e, se isso não funcionar, tente --anyauth e use --verbose para descobrir qual funciona, então encontre a chave de autenticação correta no manual e use somente essa (por segurança ).

Outra coisa que você pode tentar é ativar cookies. Alguns roteadores definem cookies no 401 e esperam que o cookie volte ao próximo pedido. Você pode ler e gravar cookies usando --cookie cookies.txt --cookie-jar cookies.txt . Se você não se importar em salvar os cookies (por exemplo, reinicializar o roteador) e não precisar analisar a saída, --cookie-jar - será suficiente para ativar o mecanismo de cookies e gravá-los no stdout.

    
por 09.12.2017 / 07:54