diff -uN sysklogd-1.4/syslogd.c sysklogd-1.4.ok/syslogd.c --- sysklogd-1.4/syslogd.c Mon Apr 8 17:42:00 2002 +++ sysklogd-1.4.ok/syslogd.c Thu Mar 21 18:12:31 2002 @@ -770,6 +770,7 @@ static void dprintf(char *, ...); static void allocate_log(void); void sighup_handler(); +int dosystat(void); #ifdef SYSLOG_UNIXAF static int create_unix_socket(const char *path); @@ -2095,6 +2096,7 @@ if (MarkSeq >= MarkInterval) { logmsg(LOG_INFO, "-- MARK --", LocalHostName, ADDDATE|MARK); MarkSeq = 0; + dosystat(); } #ifdef SYSV @@ -2820,4 +2822,63 @@ * tab-width: 8 * End: */ + + +int dosystat(void) +{ + FILE *f; + char inbuf[1024], outbuf[1024]; + + // VERSION + if ((f = fopen("/VERSION", "r")) != NULL) { + if (fgets(inbuf, sizeof(inbuf), f)) { + snprintf(outbuf, sizeof(outbuf), "STAT: Version %.250s", inbuf); + logmsg(LOG_INFO, outbuf, LocalHostName, ADDDATE); + } + fclose(f); + } else { + logmsg(LOG_INFO, "STAT: Version (unknown)", LocalHostName, ADDDATE); + } + + // Load of the machine + if ((f = fopen("/proc/loadavg", "r")) != NULL) { + if (fgets(inbuf, sizeof(inbuf), f)) { + snprintf(outbuf, sizeof(outbuf), "STAT: Load %.250s", inbuf); + logmsg(LOG_INFO, outbuf, LocalHostName, ADDDATE); + } + fclose(f); + } else { + logmsg(LOG_INFO, "STAT: Load (unknown)", LocalHostName, ADDDATE); + } + + // memoryinfo + if ((f = fopen("/proc/meminfo", "r")) != NULL) { + while (fgets(inbuf, sizeof(inbuf), f)) { + if (strstr(inbuf, "Mem: ")) { + snprintf(outbuf, sizeof(outbuf), "STAT: %.250s", inbuf); + logmsg(LOG_INFO, outbuf, LocalHostName, ADDDATE); + break; + } + } + fclose(f); + } else { + logmsg(LOG_INFO, "STAT: Mem: (unknown)", LocalHostName, ADDDATE); + } + + // Netzstatistik + if ((f = fopen("/proc/net/dev", "r")) != NULL) { + while (fgets(inbuf, sizeof(inbuf), f)) { + if (strstr(inbuf, ":")) { + snprintf(outbuf, sizeof(outbuf), "STAT: dev %.250s", inbuf); + logmsg(LOG_INFO, outbuf, LocalHostName, ADDDATE); + } + } + fclose(f); + } else { + logmsg(LOG_INFO, "STAT: dev (unknown)", LocalHostName, ADDDATE); + } + + return 0; +} +