in lib/taste_tester/tunnel.rb [140:235]
def sane_os_tunnel_cmd
@ts = TasteTester::Config.testing_end_time.strftime('%y%m%d%H%M.%S')
<<~EOS
log() {
[ -e /usr/bin/logger ] || return
logger -t taste-tester "$*"
}
get_current_pgid() {
relevant_pid=''
current_pid=$PPID
while true; do
name=$(ps -o command= -p $current_pid)
if [[ "$name" =~ sshd ]]; then
relevant_pid=$current_pid
break
fi
current_pid=$(ps -o ppid= -p $current_pid)
done
if [ -z "$relevant_pid" ];then
log "Cannot determine relevant PGID"
exit 42
fi
current_pgid="$(ps -o pgid= -p $relevant_pid | sed "s| ||g")"
}
get_current_pgid
SSH_PGID=$current_pgid
echo $SSH_PGID >
touch -t
while true; do
if ! [ -f "#{TasteTester::Config.timestamp_file}" ]; then
log "Ending tunnel: timestamp file disappeared"
break
fi
current_pid="$(cat #{TasteTester::Config.timestamp_file})"
if ! [ "$current_pid" = "$SSH_PGID" ]; then
log "Ending tunnel: timestamp PGID changed"
break
fi
get_current_pgid
if ! [ "$current_pgid" = "$SSH_PGID" ]; then
log "Ending tunnel: timestamp PGID isn't ours"
break
fi
sleep 60
done
EOS
end