যখন শেলটি রিমোট এসএসএইচ সেশনের মালিকানাধীন তখন কীভাবে সনাক্ত করবেন?


9

আমার প্রশ্ন অনুরূপ এই এক , কিন্তু আমি কিছু কিছুটা ভিন্ন খুঁজছি। আমার একটি নোটবুকের পিসি রয়েছে যা আমি দুটি ভিন্ন পরিস্থিতিতে একটি নেটওয়ার্কে লিনাক্স মেশিনগুলি অ্যাক্সেস করতে ব্যবহার করি:

  • নেটওয়ার্কের সাথে আমার সরাসরি, তারযুক্ত সংযোগ রয়েছে।

  • নেটওয়ার্কের সাথে আমার অপ্রত্যক্ষ যোগাযোগ রয়েছে। ইন্টারনেটে সংস্পর্শিত নেটওয়ার্কে একটি গেটওয়ে মেশিন রয়েছে, যা আমি নেটওয়ার্কে হোস্টগুলিতে এসএসএইচ টানেল স্থাপন করতে পারি। এটি স্পষ্টতই অনেক ধীর, উচ্চতর ল্যাটেন্সি সংযোগ।

আমার হোম ডিরেক্টরিটি সমস্ত মেশিন থেকে নেটওয়ার্ক অ্যাক্সেসযোগ্য, তাই তারা আমার একটি অনুলিপি ভাগ করে .bashrc। আমি .bashrcযে দুটি পরিস্থিতিতে রয়েছি তার মধ্যে সনাক্ত করতে এবং সেই অনুযায়ী কাজ করতে আমি কার্যকারিতা যুক্ত করতে চাই (প্রযুক্তিগতভাবে, সেখানে তিনটি পরিস্থিতি হবে, যেখানে তৃতীয়টি হ'ল আমি আমার স্থানীয় মেশিনে লগইন করছি, তবে এটি সহজেই পরিচালনা করা উচিত) )। আমি এই জাতীয় জিনিসগুলি করতে চাই:

  • alias ssh ssh -X যখন আমি স্থানীয় নেটওয়ার্কে থাকি তবে আমি ইন্টারনেটে এক্স ফরওয়ার্ডিং ব্যবহার করতে চাই না।

  • export EDITOR=gvimযখন আমি স্থানীয় নেটওয়ার্কে export EDITOR=vimথাকি তবে আমি যখন দূর থেকে থাকি।

ইত্যাদি। পূর্ববর্তী উত্তরের উপর ভিত্তি করে, দেখে মনে হচ্ছে যে SSH_CLIENTআমার স্থানীয় মেশিনে নেটওয়ার্ক অ্যাডাপ্টারের কোনওটির সাথে ক্লায়েন্টের আইপি ঠিকানাটির সাথে মেলে কিনা তা দেখে (এটি উপস্থিত থাকলে) সামগ্রীগুলি পরীক্ষা করে এবং এই জাতীয় কিছু অর্জন করতে সক্ষম হওয়া উচিত । আমি ভেবেছিলাম এটি সম্পাদন করার জন্য আরও চটচটে বা আরও শক্তিশালী উপায় আছে কিনা তা আমি দেখতে পাব।

উত্তর:


10

একটি এসএসএইচ সেশন সনাক্ত করতে, ব্যবহার করুন $SSH_CLIENT

স্থানীয় এবং দূরবর্তী সেশনগুলির মধ্যে পার্থক্য করার জন্য, দুটি সম্ভাব্য পন্থা রয়েছে: ক্লায়েন্ট-সাইড বা সার্ভার-সাইড। সার্ভারের দিকে, $SSH_CLIENTস্থানীয় আইপি ঠিকানা বা রাউটিং টেবিলের সাথে তুলনা করুন ; এটি সাধারণত আপনাকে জানায় যে সংযোগটি ল্যান থেকে এসেছে কিনা। ক্লায়েন্টের পক্ষ থেকে, আপনি নিজের ForwardX11সেটিংস রাখতে পারেন ~/.ssh/config: এটি yesLAN হোস্টের জন্য noএবং ডাব্লুএইএন হোস্টের জন্য সেট করুন । এর অর্থ ~/.ssh/configবিভিন্ন সাইটে আলাদা হওয়া; এটাই আমি করি এবং আমি শেল স্ক্রিপ্ট দিয়ে আমার উত্পাদন করি।

যদি ল্যান সংযোগের জন্য এবং ডাব্লুএইএন সংযোগের জন্য এক্স 11 ফরওয়ার্ডিং চালু থাকে, তবে আপনি $DISPLAYঅ্যাকাউন্টে নেওয়া আপনার প্রিয় সম্পাদককে সেট করতে পারেন ।

সার্ভার-সাইড সেটিংস সাধারণত আপনার .profile(অথবা .bash_profileযদি আপনার লগইন শেল বাশ হয় এবং আপনি ব্যবহার করেন .bash_profileবা .zprofileআপনার লগইন শেলটি zsh হয়) into

case ${SSH_CLIENT%% *}//$(/sbin/ifconfig |
                          sed -n 's/^.* addr:\([0-9][0-9.]*\) .*/\1/p' |
                          tr '\n' /)/ in
  "") :;;# local session
  10.42.*/10.42.*) :;; # LAN session
  1.2.3.*/1.2.3.*) :;; # LAN session
  *) unset DISPLAY;; # WAN session
esac
export EDITOR=vim
if [ -n "$DISPLAY" ] && type gvim >/dev/null 2>/dev/null; then
  EDITOR=gvim
fi
export VISUAL="$EDITOR"

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