Use dumpcap for ttcn3-tcpdump-*.sh if available
Check if dumpcap is installed (either as suid or with appropriate capabilities) and use it for packet capture instead of 'sudo tcpdump' if available. This makes it easier to use TTCN-3 testsuite as regular user without altering sudoers. Change-Id: I77df04d51a469c924cf727f0596cc33565909746
This commit is contained in:
parent
59e0c6f764
commit
81487c8b36
|
@ -2,6 +2,7 @@
|
|||
|
||||
PIDFILE=/tmp/dumper.pid
|
||||
TCPDUMP=/usr/sbin/tcpdump
|
||||
DUMPCAP=/usr/bin/dumpcap
|
||||
TESTCASE=$1
|
||||
|
||||
echo "------ $TESTCASE ------"
|
||||
|
@ -23,6 +24,21 @@ else
|
|||
# "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file
|
||||
CMD="sudo $TCPDUMP -U"
|
||||
fi
|
||||
|
||||
if [ -x $DUMPCAP ]; then
|
||||
CAP_ERR="1"
|
||||
if [ -x /sbin/setcap ]; then
|
||||
# N. B: this check requires libcap2-bin package
|
||||
setcap -q -v 'cap_net_admin,cap_net_raw=pie' $DUMPCAP
|
||||
CAP_ERR="$?"
|
||||
fi
|
||||
if [ -u $DUMPCAP -o "$CAP_ERR" = "0" ]; then
|
||||
CMD="$DUMPCAP -q"
|
||||
else
|
||||
echo "NOTE: unable to use dumpcap due to missing capabilities or suid bit"
|
||||
fi
|
||||
fi
|
||||
|
||||
$CMD -s 1500 -n -i any -w "$TTCN3_PCAP_PATH/$TESTCASE.pcap" >$TTCN3_PCAP_PATH/$TESTCASE.pcap.stdout 2>&1 &
|
||||
PID=$!
|
||||
echo $PID > $PIDFILE
|
||||
|
|
|
@ -32,7 +32,8 @@ do
|
|||
done
|
||||
|
||||
if [ -e $PIDFILE ]; then
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
DUMPER="$(ps -q "$(cat "$PIDFILE")" -o comm=)"
|
||||
if [ "$DUMPER" != "sudo" ]; then
|
||||
kill "$(cat "$PIDFILE")"
|
||||
else
|
||||
# NOTE: This requires you to be root or something like
|
||||
|
|
Loading…
Reference in New Issue