আমার দূরবর্তী সার্ভারগুলিতে আমার .বাশ_ প্রোফাইলে নিম্নলিখিতগুলি রয়েছে:
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
এটি দুটি কাজ করে: প্রথমত, শেলটি প্রতিস্থাপন করার জন্য একটি শেল ফাংশন সেট আপ করে এবং এসএসএইচ-এজেন্ট সংযোগটি এগিয়ে নিয়ে যায়, দ্বিতীয়টি কয়েক সেকেন্ডের জন্য বিরতি দেওয়ার পরে ফাংশনটি কল করে (যদি আপনি পর্দা শুরু করতে চান না)।
if
যদি ইতিমধ্যে পর্দা ( -z "${STY}"
) কোনও টার্মিনাল ( -t 0
) এর সাথে সংযুক্ত না থাকে এবং আমি সুডো চালাচ্ছি না (যা কখনও কখনও পরিবর্তন হয় না $USER
) প্রথম ধারাটি সত্য হবে ।
reattach
ফাংশন প্রথম চেক করবে যদি SSH একটি SSH-এজেন্ট সক্রিয় পোর্ট (সঙ্গে বলা হয় -n "${SSH_AUTH_SOCK}"
)। তারপরে এটি ~/.ssh/agent-script
বর্তমানে সক্রিয় সকেট ফাইলের সাথে যা কিছু আছে তা প্রতিস্থাপন করবে এবং পরিবেশ ভেরিয়েবল ( $SSH_AUTH_SOCK
)টিকে নতুন মানের সাথে প্রতিস্থাপন করবে । তারপরে স্ক্রিপ্টটি বর্তমান শেলটিকে একটি একক screen
অধিবেশন দ্বারা প্রতিস্থাপন করবে (এটি নিশ্চিত করে যে কেবলমাত্র একটির উপস্থিতি থাকা উচিত)। reattach
ফাংশনটির জন্য কোনও আর্গুমেন্ট কমান্ড ( ${1:+"$@"}
) এ পাস করা হয় ।
শেষ অংশটি প্রথমে কোনও মৃত সেশন ( screen -wipe
) সরিয়ে দেয়, ব্যবহারকারীকে (আমাকে) জানতে দেয় যে স্ক্রিনটি শীঘ্রই শুরু হবে এবং পরিবর্তে Ctrl- চাপ দিয়ে শেলটিতে ফিরে আসতে পারে C। তারপরে এটি 5 সেকেন্ডের জন্য অপেক্ষা করে এবং reattach
ফাংশনটি কল করে ।