#!/usr/bin/lua -- Fungsi untuk melakukan ping ke IP address tertentu dan menentukan status online/offline local function ping_and_check_status(ip) -- Membuat perintah ping dengan IP address yang diberikan local command = string.format("ping -c 1 -w 1 -W 1 %s", ip) -- Ping 1 kali dengan timeout 1 detik -- Menjalankan perintah ping menggunakan os.execute local handle = io.popen(command) -- Membuka proses ping local result = handle:read("*a") -- Membaca semua output dari proses ping handle:close() -- Menutup proses ping -- Mencari kata kunci yang menunjukkan bahwa host terhubung (online) if result:match("64 bytes from") then return "Online" -- Jika terhubung, kembalikan status "Online" else return "Offline" -- Jika tidak terhubung, kembalikan status "Offline" end end -- Fungsi untuk mendapatkan nilai parameter dari query string local function get_parameter_value(query_string, param_name) -- Pisahkan query string menjadi pasangan key-value berdasarkan '&' local params = {} for pair in query_string:gmatch("([^&]+)") do local key, value = pair:match("([^=]+)=([^=]+)") params[key] = value end -- Kembalikan nilai parameter berdasarkan param_name return params[param_name] end -- Membaca query string dari environment variable QUERY_STRING local query_string = os.getenv("QUERY_STRING") -- Mendapatkan nilai parameter 'ip' dari query string local ip_to_ping = get_parameter_value(query_string, "ip") -- Jika tidak ada parameter 'ip', beri nilai default if not ip_to_ping then ip_to_ping = "8.8.8.8" -- Contoh IP address default (Google DNS) end -- Panggil fungsi ping_and_check_status untuk IP address yang diberikan local status = ping_and_check_status(ip_to_ping) -- Cetak hasil status online/offline print("Content-Type: text/plain\n") -- Header untuk menampilkan output teks print(status)