Estou executando meu script de shell abaixo em uma máquina na qual o servidor de aplicativos c ++ está sendo executado na porta 8080 e no script de shell estou executando uma URL e armazena a resposta proveniente dessa URL na variável DATA.
Mas suponha que se o mesmo servidor de aplicativos estiver inativo, ele não poderá executar a URL, imprimirá Retrying Again
e permanecerá em suspensão por 30 segundos e depois executará o mesmo URL novamente.
#!/bin/bash
HOSTNAME=$hostname
DATA=""
RETRY=15
echo $HOSTNAME
while [ $RETRY -gt 0 ]
do
DATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/beat)
if [ $? -eq 0 ]
then
break
else
echo "Retrying Again" >&2
# restart the server
let RETRY-=1
sleep 30
fi
done
echo "Server is UP"
E aqui HOSTNAME
está o nome do host local do servidor no qual estou executando meu script de shell acima.
Declaração do problema: -
Agora, o que estou tentando fazer é que, se o servidor estiver inativo, ele será impresso. Retrying Again
Depois disso, quero verificar se a porta 8080
está aberta $HOSTNAME
ou não. Caso contrário, significa que o servidor está inoperante, por isso desejo reiniciar o servidor executando este comando e, em seguida, durar 30 segundos, conforme mostrado acima no script de shell.
/opt/app/test/start_stop.sh start
Isso é possível fazer aqui no meu script shell acima?
Estou executando este shell script no Ubuntu 12.04.
fonte
lsof -i :8080 -sTCP:LISTEN
e não estou conseguindo nada no console, mas se estou tentando issonetstat -tulpn | grep :8080
, recebo meu processo que está sendo executado na porta 8080, por que é assim?netstat -tulpn | grep :8080
?david@machineA:/home/david$ netstat -tulpn | grep :8080 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 27530/test_server
lsof -iTCP -sTCP:LISTEN | grep 8080
?Maneira mais simples no bash. Teste se sua porta está aberta.
Substitua o eco pelo que você deseja.
Ou você pode usar nc.
Devoluções:
fonte
nc
é uma ótima solução para o meu caso de uso; graças para sugerindoElaborar na resposta do RJ quais notas
nc
também são úteis ... Não é apenasnc
útil para consultas rápidas na linha de comandomas pode ser usado sem -v se a legibilidade humana não for o que você procura - por exemplo, para uso em um script (o código de saída indicará se a porta está aberta ou fechada).
fonte