arehbein submitted this change.

View Change

Approvals: Jenkins Builder: Verified msuraev: Looks good to me, but someone else must approve laforge: Looks good to me, approved
ttcn3-tcpdump*.sh: Fix scripts hanging on sudo prompt

Related: OS#5736

Change-Id: I05687f9bc0bb87c6f1d5c42ba235dbb90a49aeb6
---
M ttcn3-tcpdump-start.sh
M ttcn3-tcpdump-stop.sh
2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/ttcn3-tcpdump-start.sh b/ttcn3-tcpdump-start.sh
index 8433c80..8bba72f 100755
--- a/ttcn3-tcpdump-start.sh
+++ b/ttcn3-tcpdump-start.sh
@@ -10,9 +10,19 @@

TESTCASE=$1

+
+SUDOSTR=""
+if ! [ "$(id -u)" = "0" ]; then
+ SUDOSTR="sudo -n"
+ # Otherwise, if sudo /usr/bin/kill, sudo /usr/bin/tcpdump cannot be run without a password prompt,
+ # and this script will hang indefinitely
+fi
+
kill_rm_pidfile() {
- if [ -e $1 ]; then
- kill "$(cat "$1")"
+ # NOTE: This requires you to be root or something like
+ # "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file
+ if ! [ -e "$1" ] && [ -s "$1" ]; then
+ $SUDOSTR kill "$(cat "$1")" 2>&1 | grep -v "No such process"
rm $1
fi
}
@@ -27,13 +37,7 @@
kill_rm_pidfile $PIDFILE_NETCAT
kill_rm_pidfile $PIDFILE_PCAP

-if [ "$(id -u)" = "0" ]; then
- CMD="$TCPDUMP -U"
-else
-# NOTE: This requires you to be root or something like
-# "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file
- CMD="sudo $TCPDUMP -U"
-fi
+CMD="$SUDOSTR $TCPDUMP -U"

if [ -x "$DUMPCAP" ]; then
CAP_ERR="1"
diff --git a/ttcn3-tcpdump-stop.sh b/ttcn3-tcpdump-stop.sh
index faf5b2b..6796612 100755
--- a/ttcn3-tcpdump-stop.sh
+++ b/ttcn3-tcpdump-stop.sh
@@ -5,18 +5,20 @@
TESTCASE=$1
VERDICT="$2"

+SUDOSTR=""
+if ! [ "$(id -u)" = "0" ]; then
+ SUDOSTR="sudo -n"
+ # Otherwise, if sudo /usr/bin/kill, sudo /usr/bin/tcpdump cannot be run without a password prompt,
+ # and this script will hang indefinitely
+fi
+
kill_rm_pidfile() {
-if [ -e $1 ]; then
- PSNAME="$(ps -q "$(cat "$1")" -o comm=)"
- if [ "$PSNAME" != "sudo" ]; then
- kill "$(cat "$1")"
- else
# NOTE: This requires you to be root or something like
# "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file
- sudo kill "$(cat "$1")"
+ if ! [ -e "$1" ] && [ -s "$1" ]; then
+ $SUDOSTR kill "$(cat "$1")" 2>&1 | grep -v "No such process"
+ rm $1
fi
- rm $1
-fi
}

date

To view, visit change 30310. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I05687f9bc0bb87c6f1d5c42ba235dbb90a49aeb6
Gerrit-Change-Number: 30310
Gerrit-PatchSet: 1
Gerrit-Owner: arehbein <arehbein@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: arehbein <arehbein@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: msuraev <msuraev@sysmocom.de>
Gerrit-MessageType: merged