zeek/auxil/zeekctl/bin/check-config
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

58 lines
1.3 KiB
Bash
Executable File

#! /usr/bin/env bash
#
# Check Zeek's configuration for errors.
#
# check-config <use_installed_policies> <print_loaded_scripts> <cwd> <zeek_opts>
#
# use_installed_policies: 1 to use local policy files installed by
# "zeekctl install", or 0 to use the original files
# print_loaded_scripts: 1 to output loaded_scripts.log, or 0 to not output
# cwd: directory name to run Zeek from
# zeek_opts: string containing Zeek cmd-line options
if [ $# -lt 4 ]; then
echo "check-config: missing arguments"
exit 1
fi
. `dirname $0`/zeekctl-config.sh
use_installed_policies=$1
print_loaded_scripts=$2
tmp_node_dir=$3
shift 3
. "${scriptsdir}"/set-zeek-path
if [ $? -ne 0 ]; then
exit 1
fi
if [ ! -f "${zeek}" ]; then
echo "check-config: file not found: ${zeek}"
exit 1
fi
export PATH=${bindir}:${scriptsdir}:$PATH
cd "$tmp_node_dir"
if [ $? -ne 0 ]; then
exit 1
fi
echo $@ >.cmdline
check_option="-a"
if [ "$print_loaded_scripts" = "1" ]; then
# No Zeek logs are created with "-a", so don't use it with "zeekctl scripts".
check_option=
fi
ZEEKCTL_DISABLE_LISTEN=1 ZEEKCTL_CHECK_CONFIG=1 "${zeek}" $check_option "$@"
rc=$?
if [ $rc -eq 0 ] && [ "$print_loaded_scripts" = "1" ]; then
grep -v '^#' loaded_scripts*
fi
exit $rc