пинговать сервер в lua - PullRequest
       19

пинговать сервер в lua

2 голосов
/ 13 января 2012

Просто любопытно посмотреть, есть ли у lua способ пропинговать сервер без использования os.execute.Цель состоит в том, чтобы проверить, работает ли сервер.

Я проверил библиотеку lua sockets, но не думаю, что ICMP поддерживается?Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 июля 2017

Вы можете использовать io.popen () для выполнения команд ping. например,

local handler = io.popen("ping -c 3 -i 0.5 10.10.10.10")
local response = handler:read("*a")
print(response)
2 голосов
/ 14 января 2012

Насколько я знаю, нет, вы не можете отправлять необработанные ICMP-пакеты без корневого доступа. Это не ограничение Lua, это ограничение ОС.

Чтобы получить root-доступ, лучше всего иметь небольшую хорошо протестированную программу с SUID-root, а не заменять все приложение с Lua на SUID-root. Это означает, что вы в конечном итоге будете использовать os.execute (). И вместо того, чтобы писать свою собственную программу, предоставляемая ОС ping кажется хорошей командой для решения вашей проблемы.

Я согласен, что это не идеально (тем более что это создает специфический для ОС код для обработки различных команд ping). Но без вызова функции SUID, я не думаю, что есть лучший способ.

...