-- acf model for displaying logfiles recusivly module (..., package.seeall) require("fs") require("date") require("format") -- ############################################################### -- Private functions local function querycmd ( cmdline ) local cmd = io.popen( cmdline ) local cmd_result = cmd:read("*a") or "unknown" cmd:close() return cmd_result end local function diskfree ( media ) if not (media) then media = "" end local cmd = io.popen( "df -h " .. media ) local cmd_result = cmd:read("*a") or "unknown" cmd:close() return cmd_result end local function getpercentage ( data,grep,field1,field2 ) local debugoutput = "" local grepline = format.string_to_table(string.match(data,grep .. ".*"),"%s+") local val1percentage = math.floor(((grepline[field1] / (grepline[field1]+grepline[field2]))*100)+0.5) return val1percentage end -- ############################################################### -- Public functions get_system = function (self) local system = {} system.uptime = querycmd("/usr/bin/uptime") system.date = querycmd("/bin/date") system.version = fs.read_file("/etc/alpine-release") or "Unknown" system.timezone = date.what_tz() system.uname = querycmd("/bin/uname -a") local used, useddebug = getpercentage(querycmd("/usr/bin/free"), "Total:", 3, 4) system.memory = {value=querycmd("/usr/bin/free"), used=used, used_label="Total:"} return system end get_storage = function (self) local storage = {} storage.floppycapacity = {value=diskfree("/media/floppy"), used=string.match(diskfree(),"/dev/fd0%s*%S*%s*%S*%s*%S*%s*(%S*)%%"), used_label="/dev/fd0"} storage.hdcapacity = {value=diskfree(), used=string.match(diskfree(),"/dev/none%s*%S*%s*%S*%s*%S*%s*(%S*)%%"), used_label="/dev/none"} storage.partitions = fs.read_file("/proc/partitions") return storage end get_network = function (self) local network = {} network.interfaces = querycmd("/bin/ip addr") network.routes = querycmd("/bin/ip route") return network end get_modules = function (self) local modules = {} modules.list = querycmd("/sbin/lsmod") return modules end get_proc = function (self) local proc = {} proc.processor = fs.read_file("/proc/cpuinfo") proc.memory = fs.read_file("/proc/meminfo") return proc end