#!/usr/bin/env bash #set -x logdir="current_log" mkdir -p "$logdir" find_term() { # Find a terminal program and write to the global "terminal" variable local programs="urxvt xterm" local program for program in $programs; do terminal="$(which $program)" [ -n "$terminal" ] && return done # No terminal found echo "ERROR: Couldn't find terminal program! Looked for: $programs" exit 1 } term() { title="$2" if [ -z "$title" ]; then title="$(basename $@)" fi exec $terminal -title "CN:$title" -e sh -c "$1; echo; while sleep 1; do echo 'q Enter to close'; read q_to_close; if [ \"x\$q_to_close\" = xq ]; then break; fi; done" } find_term asan="$(ls -1 /usr/lib/x86_64-linux-gnu/libasan.so.* | tail -n 1)" udtrace="/n/git/udtrace/libudtrace.so" titan="/usr/lib/titan/libttcn3-dynamic.so" #msc="gdb -ex run --args $(which osmo-msc)" # To enable udtrace on osmo-msc MNCC socket, use this with adjusted /path/to/udtrace: # - LD_PRELOAD of titan is needed if udtrace was compiled with titan support. # - LD_PRELOAD of libasan allows building osmo-msc with the sanitize.opts. # - the tee saves the stderr logging as well as the udtrace output to new file current_log/osmo-msc.out, since udtrace # will not show in osmo-msc.log msc="LD_PRELOAD=$asan:$udtrace:$titan osmo-msc 2>&1 | tee -a current_log/osmo-msc.out" #msc="osmo-msc" mgw4msc="osmo-mgw -c osmo-mgw-for-msc.cfg" #mgw4bsc="strace osmo-mgw -c osmo-mgw-for-bsc.cfg" mgw4bsc="osmo-mgw -c osmo-mgw-for-bsc.cfg" hlr="osmo-hlr" stp="osmo-stp" bsc="osmo-bsc" bts="osmo-bts-virtual -c osmo-bts-virtual.cfg" virtphy="LD_PRELOAD=$asan virtphy" ms1="LD_PRELOAD=$asan mobile -c mobile.cfg" ms2="LD_PRELOAD=$asan mobile -c mobile2.cfg" SIPCON_SERVER="internal" if [ "x$SIPCON_SERVER" != "xinternal" ]; then sipcon="osmo-sip-connector -c osmo-sip-connector.cfg" case "kamailio" in "kamailio") # Require kamailio (PATH hack is needed for Debian) kamailio="$(PATH="$PATH:/usr/sbin:/sbin" which kamailio)" if [ -z "$kamailio" ]; then echo "ERROR: kamailio is not installed." echo "After installing it, make sure that it does *not* run as daemon." exit 1 fi kamailio="$kamailio -f kamailio.cfg -D -e -E" ;; "freeswitch") if [ -z "$(which freeswitch)" ]; then echo "ERROR: freeswitch is not installed." echo "Guide: https://freeswitch.org/confluence/display/FREESWITCH/Debian+10+Buster" echo "After installing it, make sure that it does *not* run as daemon." exit 1 fi ;; "none") ;; *) echo "ERROR: unknown value kamailio for SIPCON_SERVER!" exit 1 ;; esac fi #sudo tcpdump -i $dev -n -w current_log/$dev.single.pcap -U not port 22 & #sudo tcpdump -i lo -n -w current_log/lo.single.pcap -U not port 22 & term "$stp" STP & sleep .2 term "$hlr" HLR & sleep .2 term "$mgw4msc" MGW4MSC & sleep .2 term "$mgw4bsc" MGW4BSC & sleep .2 term "$msc" MSC & sleep 2 term "$bsc" BSC & sleep 2 term "$bts" BTS & sleep .2 term "$virtphy" virtphy & sleep .2 term "$ms1" MS1 & sleep 3 term "$ms2" MS2 & if [ "x$SIPCON_SERVER" != "xinternal" ]; then sleep .2 term "$sipcon" SIPCON & sleep .2 case "$SIPCON_SERVER" in "kamailio") term "$kamailio" KAMAILIO &;; "freeswitch") term "./freeswitch/freeswitch.sh" FREESWITCH &;; esac fi set +x sleep 1 echo echo enter to close read enter_to_close echo Closing... #set -x killall -2 mobile sleep 3 if [ "x$SIPCON_SERVER" != "xinternal" ]; then kill %11 # 'killall' seems to work only with the shortened name killall osmo-sip-connec killall "$SIPCON_SERVER" fi kill %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 killall osmo-msc killall osmo-bsc killall osmo-mgw killall osmo-hlr killall -9 osmo-stp killall mobile killall virtphy killall osmo-bts-virtual set +e cp *.cfg "$logdir"/ set +x echo echo enter name to save log read log_name if [ -n "$log_name" ]; then newlogdir="log/$log_name" else newlogdir="autolog/log_$(date +%Y-%m-%d_%H-%M-%S)" fi mkdir -p "$(dirname "$newlogdir")" if [ -x "$newlogdir" ]; then echo "already exists, move it manually: $newlogdir" else echo mv "$logdir" "$newlogdir" mv "$logdir" "$newlogdir" mkdir -p "$logdir" logdir="$newlogdir" fi rm lastlog ln -s "$logdir" lastlog