প্রস্থান করার সময় এসএসএইচ লোকালকম্যান্ড


9

ইন ~/.ssh/configআপনি ব্যবহার করতে পারেন LocalCommandএকটি স্থানীয় কমান্ড চালানো যখনই আপনি SSH- র মাধ্যমে একটি দূরবর্তী মেশিনে সংযোগ নির্দেশ। কিন্তু আমি যখন কোনও এসএসএইচ সংযোগটি থেকে বেরিয়ে আসি তখন কীভাবে আমি একটি কমান্ড কার্যকর করব ? দেখে মনে হচ্ছে সংযোগটি শেষ হয়ে গেলে বা বন্ধ হয়ে গেলে * .bashrc / .bash_profile * ফাইলগুলি উত্সাহিত হয় না।


উত্তর:


11

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

আপনি যদি এটি রিমোট মেশিনে ~/.bash_logoutচালিত করতে চান তবে দেখুন , যা কার্যকর করা হয় যখন কোনও লগইন শেল সুক্ষভাবে লগ আউট করে। থেকে man bash:

লগইন শেলটি যখন প্রস্থান করে, বাশ ~/.bash_logoutউপস্থিত থাকে তবে ফাইলটি থেকে আদেশগুলি পড়ে এবং সম্পাদন করে ।

~/.bash_logoutশেলটি লগ আউট হচ্ছে কিনা তা এসএসএইচ সেশন কিনা তা পরীক্ষা করতে আপনি একটি পরীক্ষা করতে পারেন, নীচের মতো কিছু কাজ করা উচিত:

if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
    # commands go here
fi

আপনি যদি এটি স্থানীয় মেশিনে চালাতে চান তবে চারদিকে একটি ফাংশন র‌্যাপার তৈরি করুন ssh। নিম্নলিখিত মত কিছু কাজ করা উচিত:

ssh() {
    if command ssh "$@"; then
        # commands go here
    fi
}

এটি আপনার প্রয়োজনের জন্য খুব সহজ হতে পারে, তবে আপনি ধারণাটি পাবেন।


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

1

তুমি কি সঠিক পথে আছো. তাহলে sshসেশন লগ-ইন শেল (দূরবর্তী কমান্ড পরিবর্তে) হয়, bashউৎস হবে /etc/bash.logoutএবং ~/.bash_logoutযখন আপনি শেল থেকে প্রস্থান করুন।

আপনি যদি রিমোট কমান্ডটি কার্যকর করতে চান তবে আপনি bashলগইন শেল হতে বাধ্য করতে পারেন । এর সাথে LocalCommandএকই রকম হতে পারে:

bash -l -c /execute/some/command

থেকে man 1 bash

-c string   If  the  -c  option  is  present, then commands are read from 
string.  If there are arguments after the string, they are assigned to 
the positional parameters,  starting with $0.
-l   Make bash act as if it had been invoked as a login shell 

When  a login shell exits, bash reads and executes commands from the 
files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.

1
রিমোট কমান্ড কার্যকর না করে (যদি কমান্ড নির্দিষ্ট করা থাকে তবে এটি লগইন শেলের পরিবর্তে দূরবর্তী হোস্টে কার্যকর করা হয়)) যাইহোক, ওপি প্রশ্নটি কাছাকাছি পাঠ করলে, এটি স্থানীয়ভাবে কিছু ঘটতে চায় বলে মনে হয়, তাই আপনার উত্তরটি আরও উপযুক্ত বলে আমি মনে করি।
জর্জ এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.