मेरे पास मेरे .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
फ़ंक्शन को कॉल करता है।