et j'ai screené, screené-é...
By n on Saturday 2 August 2014, 02:57 - Permalink
J'ai pris l'habitude de travailler sur mes serveurs en lançant un screen sur une machine, puis en ouvrant différentes fenêtres pour chaque session ssh sur les jails de la machine, ce qui me permet de naviguer aisément d'une jail à l'autre. Problème, il faut tout refaire après un reboot.
La solution consiste donc à scripter: on crée une nouvelle session détachée (appelée ici default
), on la renomme avec le nom de la machine, puis on crée de nouvelles fenêtres à l'intérieur (commande screen
), en les renommant à chaque fois avec le nom de la VM visée. Enfin, on s'attache à la session créée sur la première fenêtre:
#!/usr/local/bin/zsh
window=0
session="default"
if screen -list | grep -q "$session"
then
echo "Error: session \"$session\" already exists; please kill it first."
echo "type \"screen -X -S $session quit\" to do so."
exit 1
fi
screen -d -m -S $session
screen -S $session -p $window -X exec printf "\033k%s\033\\" `hostname -s`
for server in server1 server2 server3
do
let window++
screen -S $session -X screen ssh $server
screen -S $session -p $window -X exec printf "\033k%s\033\\" $server
done
screen -r $session -p 0
On notera la syntaxe toujours limpide des commandes "à échappement" pour renommer une fenêtre, trouvées sur cette page.