function services(i, s) { if (i >= 128){ printf "%d", i; return; } s = "%s"; if (i >= 64) { printf s, "applications"; s = ", %s"; i -= 64; } if (i >= 32) { printf s, "presentation"; s = ", %s"; i -= 32; } if (i >= 16) { printf s, "session"; s = ", %s"; i -= 16; } if (i >= 8) { printf s, "end-to-end"; s = ", %s"; i -= 8; } if (i >= 4) { printf s, "internet"; s = ", %s"; i -= 4; } if (i >= 2) { printf s, "datalink"; s = ", %s"; i -= 2; } if (i >= 1) { printf s, "physical"; s = ", %s"; i -= 1; } } function uptime(ds) { s = ds / 100; ds = ds % 100; m = s / 60; s = s % 60; h = m / 60; m = m % 60; d = h / 24; h = h % 24; if (d > 0) { printf "%d days, ", d; } if (d > 0 || h > 0) { printf "%d hours, ", h; } if (d > 0 || h > 0 || m > 0) { printf "%d minutes, ", m; } printf "%d", s; if (ds > 0) { printf ".%02d", ds; } printf " seconds"; } BEGIN { didone = 0; for (i in sysDescr) { didone = 1; if ((name = sysName) == "") name = AGENT; printf "agent %s\n", name; printf "%10.10s: %s\n", "running", sysDescr; printf "%10.10s (%s)\n", "", sysObjectID; if (name = sysServices) { printf "%10.10s: ", "services"; services(name); printf "\n"; } if (name = sysLocation) printf "%10.10s: %s\n", "location", name; if (name = sysContact) printf "%10.10s: %s\n", "contact", name; printf "%10.10s: ", "uptime"; uptime(sysUpTime); printf "\n"; } if (!didone && DIAGNOSTIC) printf "system group: %s\n", DIAGNOSTIC; }