J'ai lu sur la manière de démarrer automatiquement un écran lorsque je ssh
sur un serveur distant. Je voudrais un simple doublure à ajouter à mon .bash_profile
Pour démarrer screen
lorsque je ssh
In, et ne quittez pas ma connexion à distance lorsque je détache l'écran.
J'ai regardé dans exec screen
et à peu près toutes les combinaisons de -d
, -r
, -D
et -R
et ne peut pas comprendre quels drapeaux dont j'ai besoin.
Idéalement je voudrais taper ssh whatever
et être connecté au serveur dans un nouveau screen
_ ou peut-il faire de l'écran ancien, je voudrais un peu de savoir comment faire les deux pour voir ce que j'aime mieux. Alors je peux soit taper Ctrlad ou alors Ctrld Et demandez-moi de me ramener à la normale ssh
Connectez-vous pour ce serveur (où vous verriez le motd). De là je peux screen -r
retour dans l'écran que je veux ou frapper Ctrld à nouveau pour se déconnecter.
J'ai eu des problèmes avec 40 sessions d'écran en cascade étant créées avec certaines des solutions lors du démarrage d'une nouvelle fenêtre ou d'une nouvelle séance d'écran. J'ai pu éliminer l'écran en cascade et créer une nouvelle session si l'on n'existait pas avec ceci:
if [ -z "$STY" ]; then screen -R; fi
Il teste si vous êtes dans une session d'écran et qu'il exécute screen -R
Si vous n'êtes pas. Sans le test, vous obtenez le "attacher de l'intérieur de l'écran?" Avertissement de l'écran Chaque fois que vous créez une nouvelle fenêtre d'écran.
screen -RR
Rattachez-vous à la première session disponible ou de créer un si nécessaire.
Ici une petite extension,
le script pour la vérification BISHRC s'il existe plus d'une session d'écran détachée. S'il y a plus, vous devez choisir le manuel de la session. Quand il y a une session détachée, vous revenez à cette session. Si vous quittez la session, la session SSH se fermera également.
#Start Screen
if [ -z "$STY" ]; then
value=$( screen -ls |grep '\<pts.*Detached\>' |wc -l )
if [ $value -gt 1 ]; then
screen -ls
else
screen -R
echo 5 Sek. bis die SSH Session beendet wird.
echo Strg + C - um ohne screen weiter zu arbeiten.
sleep 6
exit
fi
fi
Si vous souhaitez vous connecter automatiquement à une session d'écran lorsque vous vous connectez via SSH, ajoutez le code ci-dessous à votre .bash_profile
ou votre .bashrc
sur votre machine distante, elle:
.bashrc
Voici le script:
#!/bin/bash
#
# Attaches to the first Detached Screen. Otherwise starts a new Screen.
# Only run if we are not already inside a running screen and only if in an SSH session.
if [[ -z "${STY}" && ! -z "${SSH_CLIENT}" ]]; then
detached_screens=($(screen -ls | grep pts | grep -v Attached))
for screen in "${detached_screens[@]}"; do
if [[ "${screen}" == *".pts"* ]]; then
IFS='.pts' read -ra split <<< "${screen}"
for id in "${split[@]}"; do
first_id="${id}"
break
done
break
fi
done
screen -R $first_id
fi
PS: Si vous souhaitez activer ceci pour le terminal local, supprimer && ! -z "${SSH_CLIENT}
sur la première ligne.