É bastante complicado fazer isso apropriadamente, gerando uma página html com um formulário e usando uma solicitação POST
adequada, talvez até com autorização por senha. Desde que você esteja em uma rede local e não se importe com ninguém se conectando, você pode, de alguma forma, fazer uma demonstração do que poderia ser feito com um simples shell script usando socat
para gerenciar a conexão.
Crie um script de shell, diga /tmp/myscript
com conteúdo
#!/bin/bash
echo "HTTP/1.0 200 OK
Content-Type: text/plain
running command" |
sed 's/$/\r/'
if echo mycommand >/dev/tcp/127.0.0.1/1234
then echo OK
else echo fail
fi
date
Não se esqueça de torná-lo executável com chmod +x /tmp/myscript
. Então corra
socat tcp-listen:8001,reuseaddr,fork exec:/tmp/myscript
e você poderá conectar seu navegador a http://yourhostname:8001/
para acionar o comando. Ou, para o seu teste, use curl -v http://localhost:8001/
e você deve ver algo como
* Connected to localhost (127.0.0.1) port 8001 (#0)
> GET / HTTP/1.1
> Host: localhost:8001
> User-Agent: curl/7.43.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/plain
<
running command
OK
Wed Aug 23 21:04:47 CEST 2017
Isso é menos que perfeito, já que alguns navegadores podem armazenar em cache o resultado e não se conectar de fato, portanto, a saída da data é uma verificação. Usando a porta 8001, você não precisa executar o socat como root. Se você quiser usar a porta de servidor usual 80 (assim seu URL é apenas http://yourhostname
) você precisa fazer sudo socat ...
.
Se você estiver familiarizado com python, ruby, perl ou muitos outros idiomas, todos eles fornecerão servidores Web simples que podem manipular solicitações POST corretamente.