#1 Le 11/11/2009, à 12:52
- Tomzz
Gestion simple de plusieurs connexions SSH
Bonjour,
[EDIT] Ajout de connexion nautilus le 14/11/2009
J'ai plusieurs machines a gérer via SSH (voir vnc pour certaines) et ça me saoulait de retaper à chaque fois les identifiants et adresses.
J'ai fait un petit script qui me permet de choisir la machine à laquelle je veux me connecter et qui lance la connexion automatiquement.
Petite précision j'utilise des certificats et j'ai interdit l'accès par mdp.
J'utilise Zenity pour les boites de dialogue.
Le script ci dessous vous demande les infos concernant le serveur et va créer un script de connexion qui permettra ensuite de simplement choisir le serveur auquel se connecter.
Pour ajouter un nouveau serveur il suffit de relancer le script ajout_client.sh, ça ne gère pas la suppression pour l'instant.
Le script est conçu pour être placé dans le répertoire /home/$USER/scripts.
Créer le répertoire:
mkdir /home/$USER/scripts
Y créer un ficher nommé ajout_client.sh et copier ce qui suit à l'intérieur:
#!/bin/bash
##
if [ -e /home/$USER/scripts/connections-ssh.sh ]; then
{
if [ -e /tmp/tmp_script_ssh ]; then
{
rm /tmp/tmp_script_ssh
}
fi
if [ -e /tmp/tmp_script_ssh1 ]; then
{
rm /tmp/tmp_script_ssh1
}
fi
echo -n "#!/bin/bash">/tmp/tmp_script_ssh
echo -n ")
## parametres">/tmp/tmp_script_ssh1
perl -0777ne 'print for /#!\/bin\/bash(.*?)\)/sg' /home/$USER/scripts/connections-ssh.sh>>/tmp/tmp_script_ssh
perl -0777ne 'print for /## parametres(.*?)## fin parametres/sg' /home/$USER/scripts/connections-ssh.sh>>/tmp/tmp_script_ssh1
}
else
{
echo -n "#!/bin/bash
##
choix=\$(zenity --list \\
--title=\"Choisissez le client\" \\
--radiolist \\
--column=\" \" \\
--column=\"Clients\" \\">/tmp/tmp_script_ssh
echo -n ")
## parametres">/tmp/tmp_script_ssh1
}
fi
nom="a"
cpt="0"
while [ ! -z $nom ]
do
nomsed=$(zenity --entry --title="Nom du nouveau client" --text="Nom de votre nouveau client")
nom=$(echo -n "${nomsed}" | sed 's/ /_/g')
if [ ! -z $nom ]; then
{
if [ -e "/home/$USER/scripts/connections-ssh.sh" ]; then
{
echo -n " \\
FALSE \"$nom\"">>/tmp/tmp_script_ssh
}
else
{
if [ $cpt = "0" ]; then
{
echo -n "
TRUE \"$nom\"">>/tmp/tmp_script_ssh
cpt="1"
}
else
{
echo -n " \\
FALSE \"$nom\"">>/tmp/tmp_script_ssh
}
fi
}
fi
id=$(zenity --entry --title="Nom utilisateur" --text="Nom d'utilisateur de $nom")
ip=$(zenity --entry --title="Adresse ou ndd" --text="IP ou NDD pour $nom")
pr=$(zenity --entry --title="N° de port" --text="n° de port pour pour $nom")
echo -n "
if [ \$choix = \"$nom\" ]; then
{
nom=\"$id\"
ipdns=\"$ip\"
port=\"$pr\"
}
fi">>/tmp/tmp_script_ssh1
}
fi
done
cat /tmp/tmp_script_ssh>/home/$USER/scripts/connections-ssh.sh
cat /tmp/tmp_script_ssh1>>/home/$USER/scripts/connections-ssh.sh
echo -n "
## fin parametres
type=\$(zenity --list \\
--title=\"Choisissez l'option\" \\
--radiolist \\
--column=\" \" \\
--column=\"Clients\" \\
TRUE \"Console\" \\
FALSE \"VNC\" \\
FALSE \"Nautilus\")
if [ \$type = \"VNC\" ]; then
{
tsclient |
( ssh -L 5901:localhost:5900 -XC \"\${nom}\"@\"\${ipdns}\" -p \"\${port}\" )
}
fi
if [ \$type = \"Console\" ]; then
{
ssh \"\${nom}\"@\"\${ipdns}\" -p \"\${port}\"
}
fi
if [ \$type = \"Nautilus\" ]; then
{
nautilus ssh://\"\${nom}\"@\"\${ipdns}\":\"\${port}\"
}
fi
exit 0">>/home/$USER/scripts/connections-ssh.sh
chmod 755 /home/$USER/scripts/connections-ssh.sh
exit 0
Le rendre exécutable:
chmod 755 /home/$USER/scripts/ajout_client.sh
Le lancer:
sh /home/$USER/scripts/ajout_client.sh
Renseigner tous les éléments, le script boucle, on peut ajouter autant de serveur que l'on veut, pour arrêter il suffit d'annuler lors de la première boite: "Nom de votre nouveau client"
Pour utiliser les connections lancer dans un terminal:
sh /home/$USER/scripts/connections-ssh.sh
Attention celui ci devra être exécuté dans un terminal faute de quoi vous ne pourrez pas couper la connexion
Pour ajouter de nouveaux serveurs relancez:
sh /home/$USER/scripts/ajout_client.sh
Dernière modification par Tomzz (Le 14/11/2009, à 18:08)
Hors ligne