मेरे पास मेरे .bash_profile में मेरे दूरस्थ सर्वर पर निम्नलिखित हैं:
if [ -z "${STY}" -a -t 0 -a X${USER} = Xarcege ]; then
reattach() {
if [ -n "${SSH_AUTH_SOCK}" ]; then
ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-script"
SSH_AUTH_SOCK="${HOME}/.ssh/agent-script" export SSH_AUTH_SOCK
fi
exec screen -A -D -RR ${1:+"$@"}
}
screen -wipe
echo 'starting screen... (type Ctrl-C to abort)'
sleep 5 && reattach
fi
यह दो काम करता है: पहला, शेल को बदलने के लिए शेल फ़ंक्शन सेट करता है और ssh- एजेंट कनेक्शन को आगे बढ़ाता है, दूसरा यह कुछ सेकंड के लिए रुकने के बाद फ़ंक्शन को कॉल करता है (यदि आप स्क्रीन को शुरू नहीं करना चाहते हैं)।
पहला ifखंड सही होगा यदि पहले से चल रही स्क्रीन ( -z "${STY}") टर्मिनल से जुड़ी हुई नहीं है ( -t 0) और मैं sudo नहीं चला रहा हूं (जो कभी-कभी आपको बदलता है $USER)।
reattachसमारोह पहले की जाँच करेगा अगर ssh एक ssh-एजेंट सक्रिय बंदरगाह (के साथ बुलाया गया था -n "${SSH_AUTH_SOCK}")। फिर यह ~/.ssh/agent-scriptवर्तमान में सक्रिय सॉकेट फ़ाइल के साथ जो कुछ भी है उसे बदल देगा और $SSH_AUTH_SOCKनए मान के साथ पर्यावरण चर ( ) को बदल देगा । तब स्क्रिप्ट वर्तमान शेल को एक screenसत्र के साथ बदल देगी (यह सुनिश्चित करना कि केवल एक ही मौजूद होना चाहिए)। reattachफ़ंक्शन के किसी भी तर्क को कमांड ( ${1:+"$@"}) में पास किया जाता है।
अंतिम भाग पहले किसी भी मृत सत्र ( screen -wipe) को हटा देता है, जिससे उपयोगकर्ता (मुझे) पता चल जाता है कि स्क्रीन शीघ्र ही शुरू हो जाएगी और इसके बजाय खोलकर वापस आ सकती है Ctrl- C। फिर यह 5 सेकंड तक इंतजार करता है और reattachफ़ंक्शन को कॉल करता है।