A resposta à sua pergunta é provavelmente "Não, não há".
A razão para isso é que o ICMP é um protocolo de baixo nível e, para produzir tráfego ICMP, um aplicativo precisa de acesso privilegiado à sua interface de rede. Você pode ver evidências disso na maioria dos sistemas pelo fato de que os binários que geram o ICMP são set-uid root. Observe o pedaço pegajoso:
$ ls -l /sbin/ping /usr/sbin/traceroute
-r-sr-xr-x 1 root wheel 28088 Aug 12 12:19 /sbin/ping
-r-sr-xr-x 1 root wheel 28608 Aug 12 12:20 /usr/sbin/traceroute
(Isto está no FreeBSD. Seus resultados em outros sistemas operacionais podem ser diferentes.)
Para um aplicativo para gerar tráfego de rede bruto, ele precisa ser executado como raiz. Como /sbin/ping
já é executado como root, sua melhor aposta provavelmente é usá-lo para gerar seus pings.
Se você estiver fazendo isso para um grande número de hosts, convém analisar fping . Outra opção seria tcping , que pode gerar pacotes TCP que fornecem resultados semelhantes a um ping ICMP. O requisito seria uma porta aberta no sistema de destino para receber o pacote. Você pode usar isso ou replicar sua abordagem com base na origem. Ambos podem já estar disponíveis como um pacote para o seu sistema operacional.
Para uma solução de monitoramento em escala maior, Nagios e Zabbix são opções gratuitas populares, mas existem muitas outras.