ARO-RP/hack/local-monitor-testing/startMDMNetwork.sh

113 строки
3.0 KiB
Bash
Executable File

#!/bin/bash
set +x
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C. Stopping processes..."
killProcesses
}
function killProcesses() {
for pid in ${pids[*]}; do
echo -n "Stopping local PID: $pid"
kill $pid
echo " stopped."
done
for pid in ${rempids[*]}; do
echo -n "Stopping remote PID: $pid"
ssh $CLOUDUSER@$PUBLICIP sudo kill $pid
echo " stopped."
done
echo "All Stopped."
exit 1
}
BASE=$( git rev-parse --show-toplevel)
SOCKETFILE="$BASE/cmd/aro/mdm_statsd.socket"
# use unique prefix for Azure resources when it is set, otherwise use your user's name
export AZURE_PREFIX="${AZURE_PREFIX:-$USER}"
echo "Using:"
echo "Resourcegroup = $RESOURCEGROUP"
echo "AzurePrefix = $AZURE_PREFIX"
VMName="$AZURE_PREFIX-mdm-link"
CLOUDUSER="cloud-user"
echo "Looking for a VM called $VMName and its public IP"
PUBLICIP=$( az vm list-ip-addresses --name $VMName -g $RESOURCEGROUP | jq -r '.[0].virtualMachine.network.publicIpAddresses[0].ipAddress' )
if [ "$PUBLICIP" == "" ] || [ "$PUBLICIP" == "null" ]; then
echo "ERR: no PUBLICIP IP address found for $VMName. Giving up."
exit 2
fi
echo -n "Found IP $PUBLICIP, starting socat on the mdm-link vm"
ssh $CLOUDUSER@$PUBLICIP 'sudo socat -v TCP-LISTEN:12345,fork UNIX-CONNECT:/var/etw/mdm_statsd.socket' &
sleep 2
REMPS=$( ssh $CLOUDUSER@$PUBLICIP 'ps aux | grep "socat -v TCP-LISTEN:12345,fork UNIX-CONNECT:/var/etw/mdm_statsd.socket" | grep -v sudo | grep -v grep' )
REMPID=$( echo $REMPS | awk '{print $2}' )
if [ "$REMPID" == "" ]; then
echo ""
echo "ERR: FAILED TO START REMOTE SOCAT.."
killProcesses
exit 1
fi
rempids[0]=$REMPID
echo "...remote socat started."
echo -n "Starting SSH Tunnel..."
ssh $CLOUDUSER@$PUBLICIP -N -L 12345:127.0.0.1:12345 -o ConnectTimeout=4 &
pids[0]=$!
sleep 5
kill -0 ${pids[0]}
if [ $? -eq 0 ]; then
echo "...SSH Tunnel started. PID: ${pids[0]}."
else
echo ""
echo "ERR: FAILED TO START TUNNEL.."
killProcesses
exit 1
fi
if [ -e "$SOCKETFILE" ] ; then
echo "Cleaning up old socket file."
rm "$SOCKETFILE"
fi
echo -n "Starting local socat link to the tunnel..."
socat -v UNIX-LISTEN:$SOCKETFILE,fork TCP-CONNECT:127.0.0.1:12345 &
pids[1]=$!
sleep 2
kill -0 ${pids[1]}
if [ $? -eq 0 ]; then
echo "...local socat started.PID: ${pids[1]}."
else
echo "ERR: FAILED TO START SOCAT. Cleaning up:"
echo "Killing SSH tunnel"
killProcesses
echo "Killed."
exit 1
fi
echo ""
echo "**********************************************************************"
echo "* Remote socat: Started. SSH Tunnel: Started. Local socat: Started. *"
echo "* *"
echo "* Hit CTRL-C to stop *"
echo "* *"
echo "**********************************************************************"
echo ""
echo ""
while true
do
sleep 100
done