container-openvpn/tests/client/wait-for-connect.sh
Kyle Manna b298eb16bc travis-ci: Extend test to actually do a connection
* Start the server
* Start the client
* Connect
* Profit
2015-09-22 14:32:55 -07:00

36 lines
853 B
Bash
Executable File

#!/bin/bash
set -ex
OPENVPN_CONFIG=${1:-/client/config.ovpn}
# Run in background, rely on bash for job management
openvpn --config "$OPENVPN_CONFIG" --management 127.0.0.1 9999 &
# Spin waiting for interface to exist signifying connection
timeout=10
for i in $(seq $timeout); do
# Break when connected
#echo state | busybox nc 127.0.0.1 9999 | grep -q "CONNECTED,SUCCESS" && break;
# Bash magic for tcp sockets
if exec 3<>/dev/tcp/127.0.0.1/9999; then
# Consume all header input
while read -t 0.1 <&3; do true; done
echo "state" >&3
read -t 1 <&3
echo -n $REPLY | grep -q "CONNECTED,SUCCESS" && break || true
exec 3>&-
fi
# Else sleep
sleep 1
done
if [ $i -ge $timeout ]; then
echo "Error starting OpenVPN, i=$i, exiting."
exit 2;
fi
# The show is over.
kill %1