To content | To menu | To search


et j'ai screené, screené-é...

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.

Add a comment

Comments can be formatted using a simple wiki syntax.

This post's comments feed