Created
July 16, 2011 11:34
-
-
Save Farzy/1086282 to your computer and use it in GitHub Desktop.
Generate a correct SSH_AUTH_SOCK variable in a reconnected "screen" shell
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Cette fonction permet de récupérer dans un screen détaché et réattaché | |
# la connexion à l'agent d'authentification SSH ainsi que le DISPLAY X11 | |
# s'il a été défini (respectivement "ssh -A" et "ssh -X"). | |
function ssh-screen-auth() { | |
# Variables locales dont un tableau | |
local SCREENPID SOCK DISP | |
local -a SCREENPIDS | |
# Cherche le pid de screen et vérifie qu'il n'y a qu'un seul screen, | |
# s'il y en a plusieurs on ne sait pas les choisir. | |
SCREENPIDS=($(pgrep -f "screen -(r|dr|DR)" -u $UID)) | |
if [ ${#SCREENPIDS[*]} -ne 1 ]; then | |
echo "Il y a plusieurs sessions screen en cours pour l'utilisateur ${USER}(${UID})" | |
return 1 | |
fi | |
SCREENPID=${SCREENPIDS[1]} | |
# On récupère les variables d'environnement SSH_AUTH_SOCK et DISPLAY, | |
# si elles existent, dans l'environnement du processus "screen" et on | |
# les réinjecte dans le shell courant. | |
SOCK=$(sudo cat /proc/${SCREENPID}/environ | tr "\0" "\n" | grep SSH_AUTH_SOCK) | |
if [ -n "${SOCK}" ]; then | |
eval $SOCK | |
export SSH_AUTH_SOCK | |
fi | |
DISP=$(sudo cat /proc/${SCREENPID}/environ | tr "\0" "\n" | grep DISPLAY) | |
if [ -n "${DISP}" ]; then | |
eval $DISP | |
export DISPLAY | |
fi | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment