I was working on a virtual machine setup to run GitHub Actions self-hosted runners. I’m launching a VM and I wanted to connect to it via SSH when it’s ready to accept SSH connections.
I never had to use Bash’s
until until (!) today but it seemed like a good use case for this. Try to connect to the VM (with a 1-second timeout), keep trying until it works and when it does… let’s go!
I ended up with this snippet:
echo "💤 [HOST] Waiting for SSH to be available on VM" until [ "$(ssh -q -o ConnectTimeout=1 $VM_USERNAME@$VM_HOSTNAME pwd)" ] do echo "💤 [HOST] Still waiting for SSH…" done echo "🏃 [HOST] Start runner on VM" ssh $VM_USERNAME@$VM_HOSTNAME "./some-redacted-script-here.sh"
I think it’s pretty cool 😎