Quand on se connecte toute la journée sur des dizaines et des dizaines de machines, il peut être intéressant de simplifier son processus de connexion, notamment en limitant le nombre de lettre à taper et en simplifient le noms des machines.
ssh => s
Un alias peu suffit :
alias s="ssh"
Mieux encore, on peut améliorer les connexions en affichant quelques infos glanées avant la connexion en ecrivant un script qui s’appellera “s”.
#!/bin/bash
if echo $1 | grep -q "@"; then
SRV=$(echo $1 | sed -re "s/.*@(.*)/\1/" )
USR=$(echo $1 | sed -re "s/(.*)@.*/\1/" )
else
USR=defaultuser
SRV=$1
fi
ENVIRONMENT=$(echo "Select environment from environment natural join server where server.server_name like '$SRV'" | mysql -h myhost -umyuser -pmypass mybase | sed '1d')
if [[ $ENVIRONMENT =~ "roduction" ]]; then
# Print warning
echo ""
echo ""
figlet $ENVIRONMENT
echo ""
echo ""
fi
ssh $USR@$SRV
exit 0
bashcomplation.d/ssh
Maintenant il est temps de simplifier le nom des machines pour ne pas a taper le nom complet. On édite le fichier /etc/bash_completion.d/ssh
have ssh &&
{
_ssh()
{
local cur prev
local -a config
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
from_name=$(echo "Select server_name from server where server_name like '%$cur%'" | mysql -hmyhost -umyuser -pmypass mybase | sed '1d' | xargs)
from_ip=$(echo "Select ip_address from address where main = 1 and ip_address like '%$cur%'" | mysql -hmyhost -umyuser -pmypass mybase | sed '1d' | xargs)
chCompgen=$(echo "$from_name $from_ip" | sed -e "s/^ //" -e "s/ $//")
COMPREPLY=( $( compgen -W "$chCompgen" ) )
return 0
}
complete -F _ssh ssh s
}
D’autres méthodes peuvent être adaptées pour récupérer le nom, un grep dans un fichier par exemple.