আমি যে সমস্ত রিমোট কমান্ডগুলিতে ব্যবহার করি ssh
(কমান্ড-লাইন ওপেনশায় ক্লায়েন্টের মাধ্যমে শুরু হয়েছিল bash
) তার স্থানীয়, টাইমস্ট্যাম্পড রেকর্ড আমি কীভাবে রাখতে পারি ?
প্রয়োজনীয়তা:
আবশ্যিক:
- সার্ভার লগিংয়ের উপর নির্ভর না করে 100% ক্লায়েন্ট-সাইড
- ব্যবহারকারীর হোম ডিরেক্টরিতে সংরক্ষিত লগ সহ প্রতি ব্যবহারকারীকে কনফিগার করা বা ইনস্টল করা।
- বিভিন্ন ব্যবহারকারী এবং হোস্টের সাথে একসাথে একাধিক সেশনের মধ্যে পার্থক্য করার জন্য সমর্থন।
- অ-অনুপ্রবেশকারী (এটি প্রতিবার সক্রিয় করার প্রয়োজন হবে না এবং এসএসএস ব্যবহারে উল্লেখযোগ্যভাবে হস্তক্ষেপ করবে না)
বেশি অগ্রাধিকার:
- হয় আউটপুট যতটা সম্ভব লগ ইন বা ফিল্টার আউট হয় না
- হয় পাসওয়ার্ড এন্ট্রি লগ করা হয় না বা ফাইল এনক্রিপ্ট করা হয়
- ব্যবহৃত প্রকৃত কমান্ডগুলি নির্দেশ করে (ট্যাব / ইতিহাস সমাপ্তির পরে, ব্যাকস্পেস, CTRL+ Cইত্যাদি ... প্রক্রিয়া করা হয়েছে)
আছে চমৎকার:
- শৃঙ্খলাবদ্ধ সেশনে কমান্ডও লগ করে (দূরবর্তী
ssh
বাsu <user>
সেশনের সময় কমান্ডগুলি প্রবেশ করা হয় ) - সেশন শুরু এবং শেষ লগ করা উচিত
- একটি সাধারণ-
bash
ভিত্তিক, মূল ছাড়াই সমাধান সবচেয়ে ভাল হবে (সম্ভবত কমান্ডের জন্য একটিalias
বাbash
মোড়ক স্ক্রিপ্টssh
?)
- শৃঙ্খলাবদ্ধ সেশনে কমান্ডও লগ করে (দূরবর্তী
আমার দক্ষতার স্তর:
- আমি প্রোগ্রামিংয়ে নতুন নই, তবে এখনও শিখছি
bash
এবং "লিনাক্স ওয়ে", সুতরাং সংক্ষিপ্ত ব্যাখ্যা সহ কোড নমুনাগুলি সবচেয়ে প্রশংসা হবে।
সম্ভাব্য কৌশলসমূহ
- কীলগার - সমস্যা: লগ পাসওয়ার্ড, লগ করে না ট্যাব / ইতিহাস সমাপ্তি ( গ্লেনের উত্তর দেখুন )
screen
প্রতি সেকেন্ডে একবার স্ক্রলব্যাক ডাম্পিং সহ এবংdiff
তাদের মধ্যে নতুন স্ক্রোলব্যাক লাইনগুলি খুঁজে পেতে - সমস্যা: কীভাবে এটি কার্যকর স্বয়ংক্রিয় পদ্ধতিতে প্রয়োগ করা যেতে পারে?ssh "$@" | tee >(some_cleaner_function >> $logfile)
- সমস্যা: জড়িত সেশনে মাল্টলাইন কমান্ড বা ইতিহাস পরিচালনা করতে পারে না, সতর্কতার সাথে পরিষ্কারের প্রয়োজন (আমার উত্তর দেখুন)- উপরের কিছু সংমিশ্রণ
একটি উদাহরণ
নিম্নলিখিত এসএসএইচ অধিবেশন:
user@local:~$ ssh user@remote
Last login: Tue Jun 17 16:34:23 2014 from local
user@remote:~$ cd test
user@remote:~/test$ ls
a b
user@remote:~/test$ exit
একটি লগ এ ~/logs/ssh.log
যেমন ফলাফল হতে পারে :
2014-06-17 16:34:50 [user@remote - start]
2014-06-17 16:34:51 [user@remote] cd test
2014-06-17 16:34:52 [user@remote] ls
2014-06-17 16:34:53 [user@remote] exit
2014-06-17 16:34:53 [user@remote - end]
অথবা, ফাইলের শীর্ষে সেশন শুরু করতে ব্যবহৃত কমান্ড লাইন দিয়ে প্রতিটি সেশনের জন্য একটি পৃথক লগ তৈরি করা হবে।