ITbert.de

Offene SSH Verbindungen anzeigen

Wow! Ich glaube das ich den Blog ein bisschen vernachlässigt habe. Es sind schon ein paar Monate vergangen seitdem ich das letzte mal etwas geschrieben habe, aber natürlich war ich in der IT nicht untätig. Bin jedoch seit ein paar Wochen kein Blackberry jünger, sondern ein Android Evangelist geworden und bin mit dem Nexus 5 super zufrieden.

In den vergangenen Monaten habe ich selber natürlich in vielen Blogs und Seiten gelesen und dabei recherchiert. So viele Leute beteiligen sich am Open Source und so will ich auch mal wieder was der Community zurückgeben – so gut es geht.

Fangen wir mal etwas klein an und als erstes gibt es ein Script das ganz einfach offene SSH Verbindungen anzeigt und man sich somit schnell auf einen Server einloggen kann. Das ist sehr Hilfreich, wenn man auf vielen Server unterwegs ist und deren DNS oder IP man nicht immer im Kopf hat. Leider hatte ich noch nicht die Lust das Script “IPv6 ready” zu machen, aber vielleicht findet sich da ja jemand ;)

Update: Das Script kann jetzt ordentlich mit v6 umgehen und auch Optionen der SSH Verbindung. Läuft wunderbar unter Linux und MacOSX.

Update 2: noch besser: https://github.com/bert2002/ossh

#!/bin/bash
# Description: Show current ssh client connections and
#              establish further one if requested.
set -e

# Define optional exclude regex.
EXCLUDE_RE=""

count=1
ssh_client_pids=$( lsof -n -iTCP -sTCP:ESTABLISHED | awk '/^ssh/{print
$2}' )

if [[ -z $ssh_client_pids ]]; then
    echo "No established ssh connection found."
    exit
fi

for pid in $ssh_client_pids; do
    # Insert space between cmd parameters via xargs.
                ssh_client_cmd="$( ps -eo pid,args | awk -v pid=$pid '$1 ~ pid && $2 ~/ssh/{$1=""; print $0}' )"
    if [[ $ssh_client_cmd =~ ${EXCLUDE_RE:-^$} ]]; then
        continue
    else
        echo "[$count] $ssh_client_cmd"
        array[$count]="$ssh_client_cmd"
        count=$(( $count+1 ))
    fi
done

# Exit if array has no content.
if [[ $count = 1 ]]; then
    echo "No ssh connections for reuse available."
    exit
fi

printf "%s " "Enter connection id:"
read connection_id
if [[ ! $connection_id =~ ^([1-9][0-9]*|$) ]]; then
    echo "Only positive integers allowed."
    exit
else
    # Use id 1 if $connection_id is unset.
    ${array[${connection_id:-1}]}
fi