Articles
Teste a conectividade para hosts no arquivo na porta 22 com o comando curl
On Dezembro 31, 2020 by adminEu gostaria de conectar o seguinte comando “curl” em um script bash e executá-lo em um hostfile de endereços IP, em seguida, exibir a saída como sucesso ou falha em um arquivo de saída.
curl -v telnet 10.10.10.10:22
Isso é possível?
Resposta
Usar o bash embutido para verificar portas abertas também pode funcionar:
#!/bin/bash host_file=/path/to/file.txt out_file=/path/to/out.txt while read -r ip; do if timeout 5 bash -c "cat < /dev/null >/dev/tcp/${ip}/22"; then echo -e "${ip}\tSuccess" else echo -e "${ip}\tFailure" fi >> "$out_file" done < "$host_file"
Comentários
- Eu não ' não conhecia este. Está documentado em algum lugar? Também funciona com IPv6?
- @Tomasz: Ele ' está documentado no manual de referência do bash 3.6 Redirecionamentos . Eu ' não tenho certeza se funciona com ipv6.
Resposta
Ainda não tenho a reputação necessária para comentar o post que afirma que o curl não é para ssh ou telnet. Isso não é exato. Curl lida com uma variedade de protocolos, incluindo telnet, ssh, scp, sftp, ftps e mais.
Esta é a sintaxe correta para curl:
curl -v telnet://127.0.0.1:22
Resposta
curl
é para HTTP / HTTPS / FTP; não para SSH ou Telnet.
Eu usaria apenas o netcat:
testport=22 # 22 for ssh; 23 for telnet; 80 for HTTP; etc. while read ip; do if nc -w2 -z $ip $testport; then echo $ip up else echo $ip down fi >> testresults.txt done < hostlist.txt
Deixe uma resposta