Code: Select all
#!/usr/bin/lua
function splits(str, sep)
if sep == nil then
return {str}
end
local parts = {} --parts array
local first = 1
local ostart, oend = string.find(str, sep, first, true) --regexp disabled search
while ostart do
local part = string.sub(str, first, ostart - 1)
table.insert(parts, part)
first = oend + 1
ostart, oend = string.find(str, sep, first, true)
end
local part = string.sub(str, first)
table.insert(parts, part)
return parts
end
print ("Content-type: Text/html\n")
print("sva's simple monitoring script!\n<br />")
print("<table border=1><tr><th>proto</th><th>state</th><th>src ip</th><th>src port</th><th>dst ip</th><th>dst port</th><th>packets</th><th>bytes</th><th>unknow1</th><th>unknow2</th></tr>")
for line in io.lines("/proc/net/nf_conntrack") do
-- print(line, "<br />\n")
while string.find(line, " ") do
line = string.gsub(line, " ", " ")
end
li = splits(line, " ")
for i=1, table.maxn(li), 1 do
if string.find(li[i], "=") ~= nil then
li[i] = string.sub(li[i], string.find(li[i], "=")+1)
end
end
if li[3] == "tcp" then
--print(line, "<br />\n")
print("<tr><td>", li[3], "</td>") -- proto
if li[6] == "ESTABLISHED" then
print("<td bgcolor=lightgreen>", li[6], "</td>") -- state
else
print("<td>", li[6], "</td>") -- state
end
print("<td>", li[7], "</td>") -- src ip
print("<td>", li[9], "</td>") -- src port
print("<td>", li[8], "</td>") -- dst ip
print("<td>", li[10], "</td>") -- dst port
print("<td>", li[11], "</td>") -- packets
print("<td>", li[12], "</td>") -- bytes
print("<td>", li[17], "</td>") -- unknow1
print("<td>", li[18], "</td></tr>") -- unknow2
elseif li[3] == "udp" then
print("<tr><td>", li[3], "</td>") -- proto
print("<td>", "---", "</td>") -- state
print("<td>", li[6], "</td>") -- src ip
print("<td>", li[8], "</td>") -- src port
print("<td>", li[7], "</td>") -- dst ip
print("<td>", li[9], "</td>") -- dst port
print("<td>", li[10], "</td>") -- packets
print("<td>", li[11], "</td>") -- bytes
print("<td>", "---", "</td>") -- unknow1
print("<td>", "---", "</td></tr>") -- unknow2
else
print("</table>")
print("<br />", line, "<br />\n")
print("<table border=1><tr><th>proto</th><th>state</th><th>src ip</th><th>src port</th><th>dst ip</th><th>dst port</th><th>packets</th><th>bytes</th><th>unknow1</th><th>unknow2</th></tr>")
end
-- break
end
print("</table>")