DEV Community

François
François

Posted on • Originally published at blog.lepape.me on

4 2

Check SSH connections

The other day, I needed to check if all servers I supervised were available to SSH. I added every droplet from Digital Ocean to my config file at ~/.ssh/config.

But then manually checking every entry was pretty long and boring. Anyway, doing it manually was not a solution as I want the capability to quickly check my access-state to the servers. So here comes a terminal approach to automate the process.

First create a bash script test-ssh.sh and chmod +x test-ssh.sh

#!/bin/bash

HOST=$1
echo "> $HOST..."

ssh -q -o BatchMode=yes  -o StrictHostKeyChecking=no $HOST 'exit 0'
RCODE=$?
if [ $RCODE -ne 0 ]; then
        echo "  [!] Unable to ssh on: $HOST"
else
        echo "OK"
fi
Enter fullscreen mode Exit fullscreen mode

This script takes in argument the Hostname and checks if it is possible to connect. With the ssh line, I use the quiet mode (-q) to keep it short, and the Bash Mode which tells SSH to never ask for a passphrase or password. The StrictHostKeyChecking is used to bypass the fingerprint verification process.

Then, to loop through the config file, I use this bash line:

cat ~/.ssh/config | grep "Host " | awk '{print $2}' | xargs -I _ ./test-ssh.sh _
Enter fullscreen mode Exit fullscreen mode

awk retrieves the Hostname from the grep output and then passes it to xargs which injects it to the bash script through the -I flag. -I specify a character ('_' in our case) to indicate where to inject the input.

The output is the following:

> service-notifications-corona...
OK
> olympe-12-was8...
  [!] Unable to ssh on: olympe-12-was8
> microservice-api-27...
OK
Enter fullscreen mode Exit fullscreen mode

Making sure I can connect to those servers improves my time-to-react in case of problems.

Post from my blog.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up