[gelöst] Bestimmten Net-Traffic mitbekommen/ShutDown-On-Idle

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

[gelöst] Bestimmten Net-Traffic mitbekommen/ShutDown-On-Idle

Beitrag von maddes.b » 20.07.2007 17:03:38

Hallo,

ich möchte gerne mit einem Programm das Netzwerk-Verkehrsvolumen auf meinem Debian-Server 4.0 (Etch) in einem bestimmten Zeitraum messen, z.B. die letzten 4 Stunden oder auch nur die letzten 30 Minuten.
Dabei möchte ich nur bestimmte Ports betrachten, z.B. Ports 22, 80 und 3690.
Das Ergebnis sollte in einem Script verwertbar sein.


Vorgeschichte und Ziel des Ganzen:
Mein privater Server in meiner Wohnung wird von mehreren Leuten aus dem Internet über SSH angesprochen, aber nur recht selten (deswegen wird auch kein Internet-Server verwendet).
Um Strom zu sparen und die Umwelt zu schonen, ist dieser ausgeschaltet.
Über das Login-Script des SSH-Benutzers wird der Server per Wake-On-Lan gestartet.

Nur drei von den Leuten können sich auf den Server per SSH anmelden und nach erfolgter Arbeit den Server manuell runterfahren.
Deshalb will ich den Server automatisch runterfahren (mit poweroff oder shutdown), wenn in den letzten 2 Stunden kein relevanter Network Traffic erfolgt ist.
Das Script zum Kontrollieren würde ich per cron alle 20 Minuten laufen lassen.
Angemeldete Benutzer oder Batch-Jobs sind äusserst selten, so dass ich diese vernachlässigen kann. Bei einem Backup würde ich den cron-job kurzzeitig deaktivieren.

Nun fehlt mir das Wissen wie ich bestimmten Netzwerk-Verkehr messen und auswerten kann bzw. das Programm welches den Verkehr entsprechend protokolliert.

Jede Hilfe ist herzlich willkommen.

Gruss
Maddes
Zuletzt geändert von maddes.b am 13.08.2007 15:46:37, insgesamt 1-mal geändert.

Benutzeravatar
neo67
Beiträge: 5
Registriert: 20.07.2007 12:21:40
Wohnort: Nürnberg

Beitrag von neo67 » 20.07.2007 17:05:37

Such mal nach tcpdump & wireshark. Die können das vielleicht.

mcdikki
Beiträge: 312
Registriert: 11.06.2007 18:14:45
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von mcdikki » 20.07.2007 17:20:47

oder tcptrack. Geht da aber nur für ein bestimmtes INterface.
LINUX - Life is too short for reboot!

Samba PDC auf Debian Etch | 2xIntel Xeon 3GHz - 2048 MB RAM - RAID 10 mit 3Ware 9550SX-4LP und 4x80GB HDD SATAII

flammenvogel
Beiträge: 76
Registriert: 07.07.2004 12:50:38
Wohnort: Bassum

Beitrag von flammenvogel » 20.07.2007 19:32:24

wenn du ein Skript schreiben willst kannst du dir auch einfach die Verbindungen aus netstat -an rausgrebben.

Das sollte kein Problem sein. Von tcpdump & wireshark würde ich abbraten, je nachdem wofür du den Server nutzt ist das a) unzulässig die Verbindung abzuhören und b) erzeugt tcpdump & wireshark zuviel Overhead, du willst ja nur ein Übersicht über die Verbindungen haben und nicht genau wissen, was wie gesendet wird übers Netz...
.gez flammenvogel

maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

Beitrag von maddes.b » 22.07.2007 01:32:29

Hallo, und erstmal Danke für Eure schnellen Antworten.

Es handelt sich um einen privaten Server der bei mir im LAN steht. Also kein rechtliches Problem und die Inhalte will ich auch nicht protokollieren oder analysieren.

tcptrack:
Nach den man pages ist tcptrack nicht das Passende, da es eher ein "grafischer" Monitor ist. Ich konnte nicht sehen wie ich das Verkehrs-Protokoll von bestimmten Ports in eine Datei umlenken kann, damit diese im Skript verarbeitet werden können.

netstat:
Zeigt nur die aktuellen Verbindungen, liefert leider nicht was in den letzten 2 Stunden passiert ist.

tcpdump:
Scheint genau das Richtige dafür zu sein.
Man kann den FIlter auf mehrere bestimmte Ziel-Ports einstellen ("dst port 1 or dst port 2").
Die Protokollzeile kann den eigenen Bedürfnissen angepasst werden, hier z.B. kurz halten (-f -n -q) und mit Datum-/Zeitstempel (-tttt).
Eine Beispiel-Ausgabe für einen SubVersion- und Web-Server ist ganz unten angegeben.

Nun verlagert sich die Aufgabe mehr in den Verwaltungs- und Scripting-Bereich:
1. Wie kann ich die Grösse der Log-Datei klein halten? Auch wenn diese bei jedem Start neu überschrieben wird.
Gibt es eine "Datei-Form", wo Zeilen vorne rausgeschmissen werden wenn eine bestimmte Grösse erreicht wird? 1KB sollte hier genügen.
Bei OpenWRT wird sowas ähnliches sogar in einem kleinen RAM-Bereich für das SysLog gemacht.
2. Wie lese ich im Script direkt die letzte Zeile der Datei?
3. Wie ermittelt man am Besten die Differenz zwischen dem Datum-/Zeitstempel in der letzten Zeile und dem "jetzt"?

Falls jemand eine Lösung bzw. Lösungs-Ansatz für diese Punkte hat, dann würde mir dies jede Menge Recherche und Zeit sparen.

Gruss
Maddes

Code: Alles auswählen

# tcpdump -i any -f -n -q -tttt "dst port 3690 or dst port 80"
tcpdump: WARNING: Promiscuous mode not supported on the "any" device
listening on any, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
2007-07-22 00:50:07.732592 IP 10.0.0.1.1505 > 10.0.0.253.80: tcp 0
2007-07-22 00:50:13.893902 IP 10.0.0.1.1505 > 10.0.0.253.80: tcp 0
2007-07-22 00:50:13.915900 IP 10.0.0.1.1510 > 10.0.0.253.80: tcp 104
2007-07-22 00:50:32.580286 IP 10.0.0.1.1512 > 10.0.0.253.3690: tcp 54
2007-07-22 00:50:32.587258 IP 10.0.0.1.1512 > 10.0.0.253.3690: tcp 16
2007-07-22 00:50:32.594527 IP 10.0.0.1.1512 > 10.0.0.253.3690: tcp 0
2007-07-22 00:50:32.595120 IP 10.0.0.1.1512 > 10.0.0.253.3690: tcp 0
2007-07-22 00:50:33.903418 IP 10.0.0.1.1510 > 10.0.0.253.80: tcp 0

swuing
Beiträge: 106
Registriert: 17.09.2006 21:18:38

Beitrag von swuing » 22.07.2007 15:06:28

hi

das müsste auch mit iptables zu realisieren sein.

...oder mit tools welche darauf aufsetzen
http://iptrafficvolume.sourceforge.net/
oder mit ulogd.

maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

Beitrag von maddes.b » 23.07.2007 14:49:48

Ich beantworte hier schon mal eine meiner Fragen selbst:

zu 2.
Lesen der letzten Zeile einer Datei geht mit: tail -1l <file>
"-1l" bedeutet vom Ende (-) 1 Zeile (Line) lesen.

Aussdem ist mir noch eine andere Idee über den Weg gelaufen:
Anstatt den Inhalt der letzten Zeile zu vergleichen, wäre es vielleicht einfacher, den Änderungs-Zeitstempel der Datei zu verwenden.
Dazu müsste sich dieser bei jeder neuen Zeile von tcpdump auch entsprechend ändern. Werde ich noch überprüfen.

iptables:
IPTables ist nicht installiert, da alle offenen Ports nur von gewollten Diensten stammen und diese auch nur vom LAN/VPN erreichbar sind. Ich halte dies derzeit für unnötig.
Aber Du hast recht mit einem Log aus IPTables sollte dies auch möglich sein.

Gruss
Maddes

maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

Beitrag von maddes.b » 23.07.2007 16:47:58

Durch einen Tipp von einem Systemer auf der Arbeit habe ich nun auch eine Lösung.
Hier im Beispiel wird ein PowerOff ausgeführt, wenn seit mind. 120 Minuten keine Veränderung an der Log-Datei vorgenommen wurde:

Code: Alles auswählen

find /var/log -name "tcpdump.log" -type f -mmin +120 -exec poweroff \;
ACHTUNG!!! Wenn das Leerzeichen vor dem Semikolon fehlt, dann gibt es einen Aufruf-Fehler.
Und in einem Script muss das Semikolon auch noch "ESCAPEd" werden. (Gibt es dafür ein deutsches Wort? "Maskiert"?)

Jetzt muss ich nur noch kontrollieren, ob sich das Änderungsdatum der Datei auch ändert, wenn tcpdump eine neue Zeile reinschreibt. Falls dies so ist, werde ich dann im Laufe der Woche die komplette Lösung hier veröffentlichen.

Gruss
Maddes

P.S.:
Wie sagen unsere Systemer immer: "Unix kann alles, man muss nur die 100+ Befehle korrekt aneinander stöpseln."

maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

Beitrag von maddes.b » 24.07.2007 22:37:32

Hier die Lösung meines Problems, welche auch sehr gut funktioniert.
Ich hoffe, das ich alles korrekt umgesetzt habe, was als Debian/Linux-Anfänger nicht immer sehr leicht ist.
Für Korrekturen, Verbesserungen und Anregungen wäre ich sehr dankbar.

Das "System" besteht aus 5 Dateien die 2 Komponenten bilden:
1. TPCDUMP-Ausgabe der relevanten Ports in ein Log. Start über Init-Script (2 Dateien)
2. Überprüfung ob der Server länger idle war. Start über CRON-Definition (2 Dateien)
3. Die fünfte Datei enthält Variablen-Definitionen die von beiden Komponenten benötigt werden.

Das System wird installiert mit "update-rc.d shutdown_on_idle_tcpdump defaults".
Über "invoke-rc.d shutdown_on_idle_tcpdump start|stop" kann es gesteuert werden.

Es folgen die Scripte/Dateien:

/etc/default/shutdown_on_idle_tcpdump (chmod a+r)
Diese Datei beinhaltet den Pfad und Dateinamen der Log-Datei des TCPDUMP-Aufrufes. Diese Angaben werden von zwei Scripts gelesen.

Code: Alles auswählen

TCPDUMPLOGPATH=/var/log
TCPDUMPLOGNAME=shutdown_on_idle_tcpdump.log
TCPDUMPLOG=${TCPDUMPLOGPATH}/${TCPDUMPLOGNAME}
/root/shutdown_on_idle_tcpdump (chmod u+x)
Da eine Ausgabe-Umleitung des Daemon im Init-Script nicht möglich ist, muss man einen Umweg über ein weiteres Script gehen.

Code: Alles auswählen

#! /bin/sh
# Small script as redirection can not be stated as an "argument"
# First parameter: packet filter
# Second parameter: log file
exec /usr/sbin/tcpdump -l -i any -f -n -q -tttt "$1" > "$2"
/root/shutdown_on_idle_cron.conf (chmod a+r)
Das ist die CRON-Definition für die regelmässige Überpüfung.

Code: Alles auswählen

# symbol link /etc/cron.d/shutdown_on_idle: crontab fragment for "shutdown on idle" system

# Check for idle every 10 minutes starting from the first minute of the hour
1-59/10 *     * * *     root   /root/shutdown_on_idle
/root/shutdown_on_idle (chmod u+x)
Hier die regelmässige Überwachung. Die Begrenzung des Logs läuft über FIND und Neustart des Daemon, da LOGROTATE in diesem Fall nicht funktioniert.
FIND wird auch zur Bestimmung verwendet, ob die maximale Idle-Zeit beim Netzwerk-Verkehr überschritten wurde.

Code: Alles auswählen

#! /bin/sh
#
# This script checks if the server was idle for a specified time
# and if so shuts it down.
#
# A veto file will be created if a test protests against a shutdown.
# This way you can concatenate several tests (network traffic,
# logged in users, etc.) and if one says "NO shutdown", then the script
# just stops. If no test complains, then the shutdown is executed.

# Author: Maddes - http://www.maddes.net/
#


##
## Script Functions
##
function do_rm_vetofile()
{
  rm -f ${VETOFILE}
}

function do_no_shutdown()
{
#  echo `date +"%x %T"` No ShutDown because of $* >> ${LOGFILE}
  do_rm_vetofile
  exit 0
}

function do_shutdown()
{
  echo `date +"%x %T"` ShutDown >> ${LOGFILE}
  /sbin/poweroff
}

function do_check_vetofile()
{
  [ -f ${VETOFILE} ] && do_no_shutdown $*
}

function do_break()
{
  echo `date +"%x %T"` BREAK: $1 >> ${LOGFILE}
  exit 1
}


##
## Script Variables
##

# General name used for files, etc. (=script name)
NAME=shutdown_on_idle

# The veto file
VETOFILE=/var/run/${NAME}.veto

# Log file for errors and/or for testing protocol
LOGFILE=/var/log/${NAME}.log

# The tcpdump log file variables are read from a shared configuration variable file, exit with error if it is not present or if not all needed variables are set
TCPDUMPNAME=${NAME}_tcpdump
[ ! -r "/etc/default/${TCPDUMPNAME}" ] && do_break "Missing or unreadable /etc/default/${TCPDUMPNAME}, check the setup"
. /etc/default/${TCPDUMPNAME}
[ -z ${TCPDUMPLOGPATH} ] && do_break "TCPDUMP Variables not set in /etc/default/${TCPDUMPNAME}, check the setup"
[ -z ${TCPDUMPLOGNAME} ] && do_break "TCPDUMP Variables not set in /etc/default/${TCPDUMPNAME}, check the setup"
[ -z ${TCPDUMPLOG} ] && do_break "TCPDUMP Variables not set in /etc/default/${TCPDUMPNAME}, check the setup"


##
## Main Script
##

## 1. Preparations

# Remove any old veto file first
do_rm_vetofile

# Check the tcpdump log...
[ ! -f "${TCPDUMPLOG}" ] && do_break "Missing ${TCPDUMPLOG}, check that corresponding init script is invoked"
# ...and reduce its size if it has become too big since the last check
# NOTE!!! Unfortunately logrotate's "copytruncate" doesn't work in this case, it zeroes the file but can't reduce its size.
#         Therefore we just use find and restart tcpdump if necessary.
find "${TCPDUMPLOGPATH}" -name "${TCPDUMPLOGNAME}" -type f -size +102400k -exec invoke-rc.d shutdown_on_idle_tcpdump restart \;

## 2. Tests

# Check active users
RC=`who | wc -l`
[ ${RC} -gt 0 ] && touch ${VETOFILE}
do_check_vetofile "Active Users"

# Check network traffic
find "${TCPDUMPLOGPATH}" -name "${TCPDUMPLOGNAME}" -type f -mmin -90 -exec touch ${VETOFILE} \;
do_check_vetofile "Network Traffic"

## 3. ShutDown
do_shutdown
/etc/init.d/shutdown_on_idle_tcpdump (chmod a+rx)
Das Init-Script zum Starten von TCPDUMP bei System-Start.

Code: Alles auswählen

#! /bin/sh
### BEGIN INIT INFO
# Provides:          tcpdump logging network traffic on the defined ports
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Initscript for tcpdump logging for "shutdown on idle" system
# Description:       Starts tcpdump in the background to log network traffic
#                    on specified port. The log can be used to find out
#                    if the server's services are in use or have been idle
#                    for a long time.
#                    tcpdump is started via a script to allow for redirecting its standard output.
#
#                    Differences to the normal Debian 4.0 "Etch" skeleton:
#                    - configuration variable file must be there and is read after LBS log_* functions
#                    - check if all needed variables where set in the configuration variable file
#                    - the tcpdump log file is deleted when starting and stopping
#                    - a symbolic link in /etc/cron.d to the cron definition in /root is created/deleted on start/stop
#                    - on starting the parameter passing has been slighlty modified, quotes where added to give the
#                      daemon args as one parameter and a second parameter was added for the log file
### END INIT INFO

# Author: Maddes - http://www.maddes.net/
#

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="tcpdump logging for \"shutdown on idle\" system"
NAME=shutdown_on_idle_tcpdump
DAEMON=/root/${NAME}
# Logging packets for the server's IP and the ports of FTP, SSH (for SFTP/WinSCP), HTTP/HTTPS, SubVersion
DAEMON_ARGS="dst host 10.0.0.253 and ( dst port 21 or dst port 22 or dst port 80 or dst port 443 or dst port 3690 )"
PIDNAME=tcpdump
PIDFILE=/var/run/${NAME}.pid
SCRIPTNAME=/etc/init.d/${NAME}

# To check: ps xa -f | grep tcpdump

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Maddes: Always read shared configuration variable file, exit with error if it is not present or if not all needed variables are set
RC=0
[ ! -r "/etc/default/${NAME}" ] && RC=1
[ ${RC} -gt 0 ] && log_daemon_msg "Missing or unreadable /etc/default/${NAME}, check the setup" $NAME
[ ${RC} -gt 0 ] && [ "$VERBOSE" != no ] && log_end_msg 1
[ ${RC} -gt 0 ] && exit 1
. /etc/default/${NAME}
RC=0
[ -z ${TCPDUMPLOGPATH} ] && RC=1
[ -z ${TCPDUMPLOGNAME} ] && RC=1
[ -z ${TCPDUMPLOG} ] && RC=1
[ ${RC} -gt 0 ] && log_daemon_msg "TCPDUMP Variables not set in /etc/default/${NAME}, check the setup" $NAME
[ ${RC} -gt 0 ] && [ "$VERBOSE" != no ] && log_end_msg 1
[ ${RC} -gt 0 ] && exit 1

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	rm -f "${TCPDUMPLOG}"
	start-stop-daemon --make-pidfile --background --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --make-pidfile --background --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
		"$DAEMON_ARGS" "${TCPDUMPLOG}"\
		|| return 2
	# Add code here, if necessary, that waits for the process to be ready
	# to handle requests from services started subsequently which depend
	# on this one.  As a last resort, sleep for some time.
	ln -s -f /root/shutdown_on_idle_cron.conf /etc/cron.d/shutdown_on_idle
}

#
# Function that stops the daemon/service
#
do_stop()
{
	rm -f /etc/cron.d/shutdown_on_idle
	rm -f "${TCPDUMPLOG}"
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $PIDNAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	#
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $PIDNAME
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  #reload|force-reload)
	#
	# If do_reload() is not implemented then leave this commented out
	# and leave 'force-reload' as an alias for 'restart'.
	#
	#log_daemon_msg "Reloading $DESC" "$NAME"
	#do_reload
	#log_end_msg $?
	#;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
	  	# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
	exit 3
	;;
esac

:
Gruss
Maddes

maddes.b
Beiträge: 10
Registriert: 20.07.2007 16:27:32
Wohnort: Ruhrgebiet
Kontaktdaten:

Verbesserte Version = bessere Performance

Beitrag von maddes.b » 11.08.2007 23:23:08

Es geht sogar noch besser, wenn man tcpdump nach dem ersten passenden Paket sich beenden lässt (-c 1).
tcpdump läuft dann nicht die ganze Zeit im Hintergrund und erstellt auch kein riesengrosses Log.

Dann muss man aber im CRON-Script dafür sorgen, dass tcpdump wieder angestartet wird wenn es nicht mehr läuft.
Dies kann man über das PID-File bewerkstelligen.

Hier die Änderungen:

/root/shutdown_on_idle_tcpdump (chmod u+x)

Code: Alles auswählen

#! /bin/sh
# Small script as redirection can not be stated as an "argument"
# First parameter: packet filter
# Second parameter: log file
exec /usr/sbin/tcpdump -l -i any -f -n -q -t -c 1 "$1" > "$2"
/root/shutdown_on_idle (chmod u+x)

Code: Alles auswählen

#! /bin/sh
.
.
.
##
## Script Variables
##
.
.
.
TCPDUMPNAME=${NAME}_tcpdump
PIDFILE=/var/run/${TCPDUMPNAME}.pid
.
.
.
##
## Main Script
##

## 1. Preparations

# Remove any old veto file first
do_rm_vetofile

# Handle tcpdump
# 1.) Reactivate tcpdump if it has stopped since last check
[ ! -f "${PIDFILE}" ] && /usr/sbin/invoke-rc.d ${TCPDUMPNAME} start
ps -p `cat "${PIDFILE}"` 1>/dev/null 2>&1
RC=$?
[ ${RC} -gt 0 ] && /usr/sbin/invoke-rc.d ${TCPDUMPNAME} restart
# 2.) Check tcpdump log
[ ! -f "${TCPDUMPLOG}" ] && do_break "Missing ${TCPDUMPLOG}, check that corresponding init script is invoked"


## 2. Tests
.
.
.

Antworten