কীভাবে কার্যকরভাবে স্ক্রিন এবং এসএসএইচ ব্যবহার করবেন?


12

আমি এসএসএইচ এবং স্ক্রিনটি এমন কনফিগার করতে চাই যাতে একটি লগইন সর্বদা পর্দার সেশনে পুনরায় সংযুক্ত হয়। আদর্শভাবে, আমি সিডি টিপলে সেই অধিবেশনটি ছাড়বে না তবে বিচ্ছিন্ন হবে। কিভাবে এটা অর্জন করা যেতে পারে? আর আমার এসএসএইচ-লাইফকে আরও সহজ করার জন্য আর কী কী দরকারী সেটিংস রয়েছে?

উত্তর:


9

আমি কেবলমাত্র আমার সমস্ত সার্ভারের জন্য নিম্নলিখিতটি করেছি যাতে আমি যখন এসএসএইচের মাধ্যমে সংযোগ করি তখন আমাকে স্বয়ংক্রিয়ভাবে একটি স্ক্রিন সেশনে রেখে দেওয়া হবে।

আপনার ব্যবহারকারীর অ্যাকাউন্টগুলির জন্য নিম্নলিখিতগুলিকে ~ / .bashrc এ যুক্ত করুন:

# Auto-screen invocation. see: http://taint.org/wk/RemoteLoginAutoScreen
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session.   Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ] 
then
  STARTED_SCREEN=1 ; export STARTED_SCREEN
  screen -RR -S main || echo "Screen failed! continuing with normal bash startup"
fi
# [end of auto-screen snippet]

এটি উপস্থিত না থাকলে প্রধান নামে একটি স্ক্রিন সেশন শুরু করবে বা যদি তা থেকে এটি পুনরায় সংযুক্ত করে। এটি করা হয়েছিল কারণ আমার বিভিন্ন অন্যান্য স্ক্রিন সেশনগুলি বিভিন্ন পরিষেবার জন্য আলাদা করে চলছে এবং তাদের সাথে সংযোগ স্থাপন করতে চাই না।


আমি কেবল যুক্ত করতে চেয়েছিলাম যে চলমান স্ক্রিন সেশন থেকে আলাদা করার জন্য সিটিআরএল-ডি কী সংমিশ্রণটি স্ক্রিনের মান।
কেওসের ডেমন

8

আমার দূরবর্তী সার্ভারগুলিতে আমার .বাশ_ প্রোফাইলে নিম্নলিখিতগুলি রয়েছে:

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ফাংশনটি কল করে ।


4

প্রথমত, আপনি বায়োবু ব্যবহার করলে আপনি সর্বদা স্বয়ংক্রিয়ভাবে বাইবু শুরু করতে একটি নতুন শেল সেশনটি কনফিগার করতে পারেন (এটি মূলত একটি দুর্দান্ত স্ক্রিন কনফিগারেশন, যদিও নতুন সংস্করণগুলি ব্যাকএন্ড হিসাবে tmux ব্যবহার করতে পারে)। আপনি যদি সত্যিই বাইবু না চান তবে সম্ভবত আপনার .profileবা অন্য শেল কনফিগার স্ক্রিপ্টটি সম্পাদনা করে ম্যানুয়ালি সংযোগের জন্য পর্দা সেট করতে exec screenপারেন TERM != "screen"

আপনি যদি এটি পছন্দ না করেন তবে authorized_keysনির্দিষ্ট ফাইলের সাথে সংযোগের জন্য একটি নির্দিষ্ট কমান্ড চালাতে আপনি ফাইলটি ব্যবহার করতে পারেন (এবং আপনার পছন্দ অনুযায়ী যতগুলি কী থাকতে পারে)। দেখুন man sshdবিস্তারিত জানার জন্য। আমি আপনাকে কমান্ডটি এমন একটি স্ক্রিপ্ট চালানোর পরামর্শ দিচ্ছি যা স্ক্রিনটি চলমান আছে এবং সংযোগ স্থাপন করছে কিনা তা পরীক্ষা করে, বা অন্যথায় একটি নতুন অধিবেশন শুরু করে।

Ctrl-D চাপুন উপর সংযোগ বিচ্ছিন্ন হিসাবে, পর্দা আপনি আপনার কী ম্যাপিং সেট আপ করতে পারবেন .screenrc। দেখুন man screenবিস্তারিত জানার জন্য। আপনি "বাইন্ডকি" খুঁজছেন।


2

আপনার প্রশ্নের থেকে পুরোপুরি অপ্রাসঙ্গিক হতে পারে তবে আপনি কি এর পরিবর্তে টিএমইউএক্স ব্যবহারের কথা ভেবে দেখেছেন? এটি অনেক কার্যকারিতা করে যা আপনি বাক্সের বাইরে সন্ধান করছেন।

যেমন। আপনি যখন টিএমইউএক্স এর অধীনে থাকা কোনও এসএসএইচ অধিবেশন থেকে সংযোগ বিচ্ছিন্ন করেন, আপনার সেশনটির সাথে সংযুক্ত করতে আপনাকে কেবল পিছনে এসএসএস এবং "tmux a" চালানো দরকার run যেহেতু আমি টিএমইউএক্স ব্যবহার শুরু করেছি, তাই আমি নুহপ / অস্বীকারকারী কমান্ডগুলি কী ভুলে গিয়েছি ... আপনার যদি কিছু চালানোর প্রয়োজন হয় এবং লগআউট করতে হয় - এটি টিএমউক্সের মধ্যে চালান এবং বিচ্ছিন্ন করে দিন। কমান্ড আউটপুট বাফার হবে, সুতরাং আপনি এটি পরে পর্যালোচনা করতে পারেন।

স্বয়ংক্রিয়ভাবে সংযুক্ত করতে আপনি .বাশার্কে নীচের মতো কিছু যুক্ত করতে পারেন:

[ -z $TMUX ] && tmux list-sessions 2>/dev/null && tmux a

বা আরও সহজ

tmux a 2>/dev/null

এটিতে কম মেমরির পদচিহ্ন এবং সামগ্রিক আইএমএইচও রয়েছে আরও ভাল / সহজে ব্যবহারের বিকল্প।

মেটা-ডি শর্টকাট টিএমইউএক্স-এ বিচ্ছিন্ন করার জন্য ডিফল্ট ম্যাপিং।


0

screen -dAr default || screen -AS defaultআমার জন্য কাজ কর. আমি এটি আমার । / .Bashrc এ যুক্ত করি

সংক্ষেপে সুইচগুলি ব্যাখ্যা করে:

  • d - অন্য সেশন থেকে স্ক্রিনটি এখনও সংযুক্ত থাকলে তা আলাদা করুন।
  • A - স্ক্রিনের উইন্ডোগুলিকে নতুন টার্মিনাল আকারের সাথে মানিয়ে নিন।
  • r default - ডিফল্ট বলে একটি পর্দা সংযুক্ত করুন।

যদি প্রথম স্ক্রিন কমান্ড (পূর্বের এক ||) সফল না হয় তবে দ্বিতীয়টি চালিত হবে:

  • A - উপরে বর্ণিত হিসাবে ...
  • S default- নাম ডিফল্ট দিয়ে নতুন স্ক্রিন সেশন তৈরি করুন ।

0

আমি বাইবু ব্যবহার করার পরামর্শ দিচ্ছি । এই সরঞ্জামটি tmux ব্যবহার করে এবং একটি দুর্দান্ত সরঞ্জামদণ্ড এবং অন্যান্য সুবিধাজনক উইন্ডো স্যুইচিং সুবিধা, হটকি ইত্যাদি সরবরাহ করে

echo "new-session" >> ~/.byobu/.tmux.conf
echo "if [ -n '\$TMUX' ]; then :; else byobu attach; fi" >> ~/.bashrc

একটি সফল এসএসএইচের পরে উপরের এই কমান্ডগুলির সাহায্যে সিস্টেমে লগইন করে চেষ্টা করে একটি বিদ্যমান বাইবু-টিএমাক্স সেশনে সংযুক্ত করুন, তা না হলে এটি একটি নতুন সেশন তৈরি করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.