#! /usr/bin/env bash # # Zeek postprocessor script to create connection summary log file. # # Needs trace-summary script. # # summarize-connections # # For an explanation of the command-line options, see the "archive-log" script. # # Example: # summarize-connections conn.2015-01-20-15-23-42.log conn 15-01-20_15.23.42 15-01-20_16.00.00 0 ascii if [ $# -ne 6 ]; then echo "summarize-connections: wrong usage" exit 1 fi input=$1 base=$2 open=$3 close=$4 terminating=$5 writer=$6 # Only process ASCII conn.log. if [ "$base" != "conn" ] || [ "$writer" != "ascii" ]; then exit 0 fi . `dirname $0`/../zeekctl-config.sh if [ $? -ne 0 ]; then exit 1 fi # If the tracesummary zeekctl config option is not defined, then exit (this is # not an error). if [ -z "${tracesummary}" ]; then exit 0 fi # GNU's time can do memory as well. export TIME="%E real, %U user, %S sys, %KK total memory" # trace-summary needs to import SubnetTree export PYTHONPATH=${libdirinternal}:$PYTHONPATH # If ${memlimit} is not set, then use 1.5GB. LIMIT=${memlimit:-1572864} ulimit -m $LIMIT # Note: on OpenBSD, attempting to adjust virtual memory size always fails. if [ "${os}" != "OpenBSD" ]; then ulimit -v $LIMIT fi summary_options="-c -r" # If we're a cluster installation, we assume we have lots of traffic and # activate sampling. if [ "${standalone}" = "0" ]; then summary_options="$summary_options -S 0.01" fi if [ -f "${localnetscfg}" ]; then summary_options="$summary_options -l ${localnetscfg}" fi output=conn-summary.$open.log output_basename=conn-summary # Don't bother checking for errors here, because the log file will # contain the error messages. nice ${time} "${tracesummary}" $summary_options $input 2>&1 | grep -v "exceeds bandwidth" >$output if [ "${mailconnectionsummary}" = "1" ]; then # Convert timestamps to the format HH:MM:SS, and build the subject line. start=`echo $open | sed 's/^..-..-.._//' | sed 's/\./:/g'` end=`echo $close | sed 's/^..-..-.._//' | sed 's/\./:/g'` subject="Connection summary from $start-$end" "${scriptsdir}"/send-mail "$subject" <$output fi # Archive the conn-summary log file. "${scriptsdir}"/archive-log $output $output_basename $open $close $terminating ascii