Commit a20e15e6 authored by Adam Wujek's avatar Adam Wujek 💬

userspace/snmpd: add deamons start counters

Add following deamon's start counters:
--sshd (dropbear)
--https (lighttpd)
--snmpd
--syslog

Update:
--start scripts
--snmpd
--MIB
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 47e39151
...@@ -6,6 +6,18 @@ ...@@ -6,6 +6,18 @@
# Make sure the dropbearkey progam exists # Make sure the dropbearkey progam exists
[ -f /usr/bin/dropbearkey ] || exit 0 [ -f /usr/bin/dropbearkey ] || exit 0
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_sshd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() { start() {
echo -n "Starting dropbear sshd: " echo -n "Starting dropbear sshd: "
# Make sure dropbear directory exists # Make sure dropbear directory exists
...@@ -28,6 +40,7 @@ start() { ...@@ -28,6 +40,7 @@ start() {
fi fi
umask 077 umask 077
start-stop-daemon -S -q -p /var/run/dropbear.pid --exec /usr/sbin/dropbear start-stop-daemon -S -q -p /var/run/dropbear.pid --exec /usr/sbin/dropbear
start_counter
echo "OK" echo "OK"
} }
stop() { stop() {
......
#!/bin/sh #!/bin/sh
COUNTER_FILE="/tmp/start_cnt_syslogd"
start_counter() {
# increase boot counter
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() { start() {
# Check the configuration file: if there's no target, don't run the thing. # Check the configuration file: if there's no target, don't run the thing.
if ! grep -q '^##.*remote-host' /etc/rsyslog.conf; then if ! grep -q '^##.*remote-host' /etc/rsyslog.conf; then
echo -n "Starting rsyslog: " echo -n "Starting rsyslog: "
/usr/sbin/rsyslogd /usr/sbin/rsyslogd
start_counter
echo "OK" echo "OK"
else else
echo "Not starting rsyslog: no target host selected" echo "Not starting rsyslog: no target host selected"
# avoid SNMPd complaints about lack of start counter file
echo "0" > $COUNTER_FILE
fi fi
} }
......
...@@ -3,9 +3,22 @@ ...@@ -3,9 +3,22 @@
SNMP_PID=/var/run/snmpd.pid SNMP_PID=/var/run/snmpd.pid
SNMP_CONF=/wr/etc/snmpd.conf SNMP_CONF=/wr/etc/snmpd.conf
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_snmpd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() { start() {
# Log to syslog at daemon level. And log source address (-a) # Log to syslog at daemon level. And log source address (-a)
snmpd -Lsd -p $SNMP_PID -a -c $SNMP_CONF snmpd -Lsd -p $SNMP_PID -a -c $SNMP_CONF
start_counter
} }
stop() { stop() {
......
...@@ -2,9 +2,23 @@ ...@@ -2,9 +2,23 @@
# #
# Starts lighttpd daemon. # Starts lighttpd daemon.
# #
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_httpd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() { start() {
echo -n "Starting lighttpd daemon: " echo -n "Starting lighttpd daemon: "
/usr/sbin/lighttpd -f /var/www/lighttpd.config /usr/sbin/lighttpd -f /var/www/lighttpd.config
start_counter
echo "OK" echo "OK"
} }
stop() { stop() {
......
...@@ -645,6 +645,38 @@ wrsStartCntRTUd OBJECT-TYPE ...@@ -645,6 +645,38 @@ wrsStartCntRTUd OBJECT-TYPE
"Number of RTU deamon starts" "Number of RTU deamon starts"
::= { wrsStartCntGroup 3 } ::= { wrsStartCntGroup 3 }
wrsStartCntSshd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SSH deamon starts"
::= { wrsStartCntGroup 4 }
wrsStartCntHttpd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of HTTP deamon starts"
::= { wrsStartCntGroup 5 }
wrsStartCntSnmpd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SNMP deamon starts"
::= { wrsStartCntGroup 6 }
wrsStartCntSyslogd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SYSLOG deamon starts"
::= { wrsStartCntGroup 7 }
wrsSpllState OBJECT IDENTIFIER ::= { wrsExpertStatus 3 } wrsSpllState OBJECT IDENTIFIER ::= { wrsExpertStatus 3 }
-- wrsSpllStatusGroup (.7.3.2) -- wrsSpllStatusGroup (.7.3.2)
wrsSpllStatusGroup OBJECT IDENTIFIER ::= { wrsSpllState 2 } wrsSpllStatusGroup OBJECT IDENTIFIER ::= { wrsSpllState 2 }
......
...@@ -2,18 +2,44 @@ ...@@ -2,18 +2,44 @@
#include "snmp_shmem.h" #include "snmp_shmem.h"
#include "wrsStartCntGroup.h" #include "wrsStartCntGroup.h"
#define START_CNT_SSHD "/tmp/start_cnt_sshd"
#define START_CNT_HTTPD "/tmp/start_cnt_httpd"
#define START_CNT_SNMPD "/tmp/start_cnt_snmpd"
#define START_CNT_SYSLOGD "/tmp/start_cnt_syslogd"
static struct pickinfo wrsStartCnt_pickinfo[] = { static struct pickinfo wrsStartCnt_pickinfo[] = {
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHAL), FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHAL),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntPPSI), FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntPPSI),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntRTUd), FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntRTUd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSshd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHttpd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSnmpd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSyslogd),
}; };
struct wrsStartCnt_s wrsStartCnt_s; struct wrsStartCnt_s wrsStartCnt_s;
/* read start counter from files in /tmp */
static void read_start_count(char *file, uint32_t *counter)
{
FILE *f;
f = fopen(file, "r");
if (!f) {
snmp_log(LOG_ERR, "SNMP: wrsStartCntGroup filed to open file "
"%s\n", file);
} else {
/* ignore fscanf errors */
fscanf(f, "%d", counter);
fclose(f);
}
}
time_t wrsStartCnt_data_fill(void){ time_t wrsStartCnt_data_fill(void){
static time_t time_update; static time_t time_update;
time_t time_cur; time_t time_cur;
time_cur = time(NULL); time_cur = time(NULL);
if (time_update if (time_update
&& time_cur - time_update < WRSSTARTCNT_CACHE_TIMEOUT) { && time_cur - time_update < WRSSTARTCNT_CACHE_TIMEOUT) {
...@@ -29,6 +55,11 @@ time_t wrsStartCnt_data_fill(void){ ...@@ -29,6 +55,11 @@ time_t wrsStartCnt_data_fill(void){
wrsStartCnt_s.wrsStartCntPPSI = ppsi_head->pidsequence; wrsStartCnt_s.wrsStartCntPPSI = ppsi_head->pidsequence;
wrsStartCnt_s.wrsStartCntRTUd = rtud_head->pidsequence; wrsStartCnt_s.wrsStartCntRTUd = rtud_head->pidsequence;
read_start_count(START_CNT_SSHD, &wrsStartCnt_s.wrsStartCntSshd);
read_start_count(START_CNT_HTTPD, &wrsStartCnt_s.wrsStartCntHttpd);
read_start_count(START_CNT_SNMPD, &wrsStartCnt_s.wrsStartCntSnmpd);
read_start_count(START_CNT_SYSLOGD, &wrsStartCnt_s.wrsStartCntSyslogd);
/* there was an update, return current time */ /* there was an update, return current time */
return time_update; return time_update;
} }
......
...@@ -8,6 +8,10 @@ struct wrsStartCnt_s { ...@@ -8,6 +8,10 @@ struct wrsStartCnt_s {
uint32_t wrsStartCntHAL; uint32_t wrsStartCntHAL;
uint32_t wrsStartCntPPSI; uint32_t wrsStartCntPPSI;
uint32_t wrsStartCntRTUd; uint32_t wrsStartCntRTUd;
uint32_t wrsStartCntSshd;
uint32_t wrsStartCntHttpd;
uint32_t wrsStartCntSnmpd;
uint32_t wrsStartCntSyslogd;
}; };
extern struct wrsStartCnt_s wrsStartCnt_s; extern struct wrsStartCnt_s wrsStartCnt_s;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment