35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
|
Title: Automating GNU screen startup
|
||
|
|
||
|
At work I use GNU screen with one window per server (ssh connection),
|
||
|
and when I loose my screen, it takes minutes to rebuild the naming and
|
||
|
the ssh connections ... So I searched and found a PHP version on
|
||
|
[Jon's blog](http://snowulf.com/2011/09/13/automated-screen-launch/)
|
||
|
but I don't like PHP and don't want a PHP cli on my machine (even to
|
||
|
start screen !) So I rewrote it in bash (to have brace expansion !)
|
||
|
Enjoy:
|
||
|
|
||
|
:::bash
|
||
|
#!/bin/bash -f
|
||
|
|
||
|
SCREEN_NAME=julien
|
||
|
SERVERS=$(echo {julien,root}@dev root@{www,sql}{1,2} root@media{1,2,3,4,5,6}
|
||
|
|
||
|
screen -dmS "$SCREEN_NAME"
|
||
|
NUM=0
|
||
|
for SERVER in $SERVERS
|
||
|
do
|
||
|
NUM=$((NUM + 1))
|
||
|
screen -S "$SCREEN_NAME" -X screen
|
||
|
if [ z"$SERVER" != z"" ]
|
||
|
then
|
||
|
screen -S "$SCREEN_NAME" -p $NUM -X title "$SERVER"
|
||
|
screen -S "$SCREEN_NAME" -p $NUM -X stuff "ssh $SERVER $(printf \\r)"
|
||
|
fi
|
||
|
done
|
||
|
printf "Done, now you can join your screen with :\n"
|
||
|
printf "$ screen -dr -S $SCREEN_NAME\n"
|
||
|
|
||
|
Don't forgot to start your ssh-agent just before starting this script!
|
||
|
PS: If you don't have an ssh-agent, you may want to remove the `$(printf
|
||
|
\\r)` and press enter yourself.
|