Forum Astuces.divers [X/KDE] Changer le titre d'un onglet Konsole lors d'une connexion ssh

Posté par  .
Étiquettes : aucune
0
10
nov.
2007
Ce petit morceau de bash permet de changer le nom de l'onglet Konsole lorsque vous vous connectez à un hôte distant via ssh.

Il charge aussi automatiquement votre clé ssh par défaut dans ssh-agent si elle ne l'est pas déjà, pratique si votre clé est protégée par mot de passe et que vous devez l'utiliser plusieurs fois ;)

Ajouter ceci dans ~/.bashrc:


function konsole_ssh() {

OLDNAME=$(dcop $KONSOLE_DCOP_SESSION sessionName)

# On détermine le nom d'hôte en le cherchant dans l'argument $1.
HOST=$(echo "$1"|awk -F'@' '$0 ~ /@/ {print $2}; $0 !~ /@/ {print}')

# Commentez si vous n'utilisez pas les clés ssh
ssh-add -l > /dev/null
if [[ $? != 0 ]]; then
ssh-add
fi

# On renomme la session
dcop $KONSOLE_DCOP_SESSION renameSession "$HOST"

#On se connecte
$(which ssh) $@

#Lors de la déconnexion, le script reppart ici

#Si l'ancien nom était déjà le nom d'hôte, on met un autre nom
if [[ "$OLDNAME" == "$HOST" ]]; then
OLDNAME="Shell No. "`dcop $KONSOLE_DCOP_SESSION sessionPID`
fi

#On renomme avec l'ancien nom
dcop $KONSOLE_DCOP_SESSION renameSession "$OLDNAME"
}

alias ssh='konsole_ssh'


Recharger le bashrc:
. ~/.bashrc

Ensuite un
ssh moi@example.com
Renomme votre onglet Konsole en example.com :)
  • # la même avec le nom de la connection ssh du bookmark

    Posté par  . Évalué à 1.

    [Konsole auto tab naming based on Konsole bookmark's name]

    j'ai ajouté quelques lignes a ton script pour avoir automatiquement le nom de la session ssh d'après celui utilisé dans le bookmark.

    Le parsing xml est sale et marche (si le nom de l'host est identique à l'adresse de l'host... je met une majuscule au noms... je sais pas :).

    Ajouter ceci dans ~/.bashrc:

    function konsole_ssh() {

    OLDNAME=$(dcop $KONSOLE_DCOP_SESSION sessionName)

    # On détermine le nom d'hôte en le cherchant dans l'argument $5.
    # => l'url dans le bookmark étant du type ssh://me@0.0.0.0:2222
    # user et port renseignés sinon le numéro de l'argument change
    # => ce script étant un fonction sur l'appel à la commande ssh locale
    # ceci ne marche pas si l'on rebondit :( home:ssh host1: ssh host2 ):


    HOSTURL=$(echo "$5")
    HOSTLINE=$(grep -n $HOSTURL ~/.kde/share/apps/konsole/bookmarks.xml| cut -f1 -d:)
    HOST=$(awk -F "" -v count=`expr $HOSTLINE + 1` 'NR==count {print $1}' ~/.kde/share/apps/konsole/bookmarks.xml| cut -d '>' -f 2)

    # Commentez si vous n'utilisez pas les clés ssh
    ssh-add -l > /dev/null
    if [[ $? != 0 ]]; then
    ssh-add
    fi

    # On renomme la session
    dcop $KONSOLE_DCOP_SESSION renameSession "$HOST"

    #On se connecte
    $(which ssh) $@

    #Lors de la déconnexion, le script reppart ici

    #Si l'ancien nom était déjà le nom d'hôte, on met un autre nom
    if [[ "$OLDNAME" == "$HOST" ]]; then
    OLDNAME="Shell No. "`dcop $KONSOLE_DCOP_SESSION sessionPID`
    fi

    #On renomme avec l'ancien nom
    dcop $KONSOLE_DCOP_SESSION renameSession "$OLDNAME"
    }

    alias ssh='konsole_ssh'

    Merci andeus grâce à ton script j'ai exactement ce que je voulais depuis un petit moment !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.