mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
Eventscript functions: optimise ctdb_check_tcp_ports() and add debug.
ctdb_check_tcp_ports() runs "netstat -a -t -n" in a loop for each port. There are 2 problems with this: * Netstat is run on each loop iteration when it need only be run once. * The -a option is used to list all connections but the function only cares about the listening ports. There may be many thousands of non-listening ports to grep through. This changes ctdb_check_tcp_ports() to run netstat with the -l option instead of the -a option. It also only runs netstat once before the main loop. When a port is found to not be listening the output of the netstat command is now dumped to help with debugging. Signed-off-by: Martin Schwenke <martin@meltin.net> (This used to be ctdb commit 830355a8b18c53cfcc3ad1e3009bbb1a7a681fa0)
This commit is contained in:
parent
f0f9271301
commit
5c9fbb55ce
@ -324,15 +324,26 @@ ctdb_check_directories() {
|
||||
# check a set of tcp ports
|
||||
# usage: ctdb_check_tcp_ports <ports...>
|
||||
######################################################
|
||||
ctdb_check_tcp_ports() {
|
||||
ctdb_check_tcp_ports()
|
||||
{
|
||||
_cmd='netstat -l -t -n'
|
||||
_ns=$($_cmd)
|
||||
for _p ; do # process each function argument (port)
|
||||
for _a in '0\.0\.0\.0' '::' ; do
|
||||
_pat="[[:space:]]${_a}:${_p}[[:space:]]+[^[:space:]]+[[:space:]]+LISTEN"
|
||||
if echo "$_ns" | grep -E -q "$_pat" ; then
|
||||
# We matched the port, so process next port
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
|
||||
for p ; do
|
||||
if ! netstat -a -t -n | grep -q "0\.0\.0\.0:$p .*LISTEN" ; then
|
||||
if ! netstat -a -t -n | grep -q ":::$p .*LISTEN" ; then
|
||||
echo "ERROR: $service_name tcp port $p is not responding"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
# We didn't match the port, so flag an error, print some debug
|
||||
cat <<EOF
|
||||
ERROR: $service_name tcp port $_p is not responding
|
||||
$_cmd shows this output:
|
||||
$_ns
|
||||
EOF
|
||||
return 1
|
||||
done
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user