কোনও সার্ভারে সমস্ত ব্যাশ কমান্ড কীভাবে লগ করবেন?


21

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

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

উত্তর:


32

বেস শেলগুলির জন্য, সিস্টেম-প্রশস্ত BASH রানটাইম কনফিগারেশন ফাইলটি সম্পাদনা করুন:

sudo -e /etc/bash.bashrc

এই ফাইলটির শেষে যুক্ত করুন:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

একটি নতুন ফাইল দিয়ে "লোকাল 6" এর জন্য লগিং সেট আপ করুন:

sudo -e /etc/rsyslog.d/bash.conf

এবং বিষয়বস্তু ...

local6.*    /var/log/commands.log

আরএসিস্লাগ পুনরায় চালু করুন:

sudo service rsyslog restart

প্রস্থান. লগ ইন করুন। ভয়েলা!

তবে আমি লগ রোটেশন সম্পর্কে ভুলে গেছি:

sudo -e /etc/logrotate.d/rsyslog

একইভাবে ঘোরানোর জন্য লগ ফাইলগুলির একটি তালিকা রয়েছে ...

/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message

সুতরাং সেই তালিকায় নতুন ব্যাশ-কমান্ড লগ ফাইল যুক্ত করুন:

/var/log/commands.log

সংরক্ষণ করুন।


লগ ঘূর্ণন সম্পর্কে ভুলে গেছি যা আমি উত্তরে যুক্ত করেছি।

1
এই উপায়টি কার্যকর হয় তবে আমি এটির চারপাশে একটি পদ্ধতি উদ্ভাবন করতে পারি (সম্ভবত সিএসএস, .ব্যাশ_লগআউট সহ)। আমি সাবাকনের অ্যাকসিট সমাধান সহ যাব। এগুলি দুর্দান্ত পঠনগুলি ছিল: লিনাক্সজার্নাল / আর্টিক্যাল

2
আমি বিশ্বাস করি যে এটি সহজেই রিসেট বা আনসেট করে PROMPT_COMMANDবা একটি নন-ব্যাশ শেলের সাথে এক্সিকিউট-ইন করে ব্যবহারকারী সহজেই নিষ্ক্রিয় করতে পারে ।
স্টিফান লাসিউস্কি

1
@Benubird মনে হচ্ছে এর কয়েকটি প্রিসেট সুবিধা মাত্রা, তাদের 8 হচ্ছে local0-local7 মত: en.wikipedia.org/wiki/Syslog । 0 এর অর্থ জরুরি অবস্থা, 7 মানে ডিবাগ, এবং 6 এর মাত্র 7 টি লজ্জাজনক, "সাধারণ অপারেশনাল বার্তা"।
munchybunch

1
@ ইউকাসিমা কারণ লগগুলি মুছে ফেলা না হলে বড় ফাইল হয়ে উঠতে পারে, ঘোরানো মানে লগ ফাইলগুলিকে ঘোরানো এবং লগগুলি ছোট রাখার জন্য
পুরানোগুলিকে অপসারণ করা

4

একটি প্রক্রিয়া অ্যাকাউন্টিং সিস্টেম এ ব্যাপারে, বিশেষ করে সহায়ক হতে পারে acct প্যাকেজ যে lastcomm এবং এসি কমান্ড প্রদান করে।

এসি কয়েক ঘন্টার মধ্যে ব্যবহারকারীদের সংযোগের সময় সম্পর্কে পরিসংখ্যানগুলি মুদ্রণ করে commands এটি সিস্টেমের সাথে ব্যবহারকারীকে দূরবর্তীভাবে এসএসএইচ বা সিরিয়াল টার্মিনালের মাধ্যমে বা কনসোলে থাকাকালীন সময়ে সংযোগ করা হয়েছিল।

লাস্টকোম কমান্ড পূর্বে সম্পাদিত আদেশগুলি সম্পর্কে তথ্য প্রদর্শন করে। সর্বাধিক সাম্প্রতিক এন্ট্রি তালিকার শীর্ষে দেওয়া হয়েছে। প্রতিটি প্রসেস ব্যবহৃত মোট সিপিইউ সময়ের পরিমাণও প্রদর্শিত হয়।

একটি পুরাতন টিউটোরিয়াল যা সহায়ক হতে পারে এখানে:

http://www.linuxjournal.com/article/6144?page=0,1

শেষের মতো অন্যান্য অ্যাকাউন্টিং কমান্ডগুলি এই টিউটোরিয়ালে পাওয়া যাবে:

http://www.techrepublic.com/article/system-accounting-in-linux/1053377


লাস্টকম কম্যান্ড লগার হিসাবে বেশ অর্থহীন। এটি কেবল চালানো কার্যকর হওয়া রেকর্ড করে। কোন যুক্তি, সুইচ বা পাথ লগ করা হয় না।
ফিল_1984_

3

আপনি স্নোপি ব্যবহার করতে পারেন ।

স্নুপি লগার আপনার উদ্দেশ্যটির জন্য উপযুক্ত হতে পারে। এটি অনিবার্য লগিং সলিউশন হিসাবে নয়, বরং পরিশ্রমী প্রশাসকদের জন্য যারা তাদের নিজস্ব ক্রিয়াকলাপ ট্র্যাক রাখতে পছন্দ করে তাদের জন্য সহায়ক একটি সরঞ্জাম।

প্রকাশ: আমি স্নোপি রক্ষণাবেক্ষণকারী।


দয়া করে উত্তরে এটি ইনস্টল এবং ব্যবহারের জন্য নির্দেশাবলী সরবরাহ করুন।
মুরু

1
স্নুপি গিথুব পৃষ্ঠায় বিশদ ইনস্টলেশন সংক্রান্ত নির্দেশাবলী পাওয়া যায় যা এখনই মূল স্নোপি সংস্থান: github.com/a2o/snoopy । আমি আবার অন্য জায়গায় ইনস্টলেশন সংক্রান্ত নির্দেশাবলী সরবরাহ করছি যেহেতু প্রাথমিক অবস্থান ডিজাইন দ্বারা রক্ষণ করা হয় এবং অন্যরা তা না করে। আরও কাঠামোগত হওয়ার জন্য BTW Readme সবেমাত্র আপডেট করা হয়েছিল।
বোস্টজান স্কুফকা

1
হয়তো তাই. তবে এটি ব্যবহারের জন্য প্রয়োজনীয় পদক্ষেপগুলির সংক্ষিপ্তসার ব্যতীত, এটি একটি লিঙ্ক-একমাত্র উত্তর এবং মুছার সম্ভাবনা রয়েছে।
মুড়ু

1
ঠিক আছে, আমি একটি বিকল্প এবং টেকসই সমাধানের জন্য একটি পয়েন্টার সরবরাহ করেছি। যদি এই সাইটটি সম্পর্কে যা হয় তা না হয় তবে আমার অ্যাকাউন্ট সহ একসাথে এটি মুছে ফেলা উচিত।
বোস্টজান স্কুফকা

2
পুনঃটুইট করেছেন কমপক্ষে যুক্তিসঙ্গতভাবে স্বয়ংসম্পূর্ণ উত্তর থাকা কেবল স্ট্যাক এক্সচেঞ্জের জিনিস। আপনি যদি পদক্ষেপগুলি যুক্ত করার পক্ষে এত দৃ strongly়ভাবে বিরোধিতা করেন তবে এটি আপনার ইচ্ছা। আমার ডাউনভোটটি রয়ে গেছে। কেউ সম্ভবত এটি upvote হবে।
মুড়ু

3

আপনি কোনও প্যাচ বা একটি বিশেষ এক্সিকিউটেবল সরঞ্জাম ব্যবহার না করে সমস্ত ব্যাশ কমান্ড / বিল্ট-ইনগুলিকে কোনও পাঠ্য-ফাইল বা সিসলগ সার্ভারে লগ করার জন্য একটি স্ক্রিপ্ট এখানে পাবেন ।

স্থাপন করা খুব সহজ, কারণ এটি একটি সাধারণ শেল স্ক্রিপ্ট যা ব্যাশের প্রারম্ভিক সময়ে একবার কল করা প্রয়োজন ।

এটি নিখরচায় এবং আমি আশা করি এটি আপনার প্রয়োজন অনুসারে হয়।


1
এটি একটি ভাল উত্তর তবে আপনার ব্লগে লিঙ্ক না দিয়ে উত্তরের পদক্ষেপগুলি এবং স্ক্রিপ্টটি উত্তরের মুখ্যে অন্তর্ভুক্ত করা ভাল। আপনি এই উত্তর অন্তর্ভুক্ত করতে দয়া করে আপনার উত্তর সম্পাদনা করতে পারেন?
টম ব্রসম্যান

2
সাইট এখন অনুপলব্ধ
গায়া

0

একাধিক অধিবেশনগুলির ইতিহাসের ফাইলটি ওভার-লিখন না করার জন্য যত্ন নিতে, আপনাকে "শপ্ট-হিস্টপেন্ড" বাশ স্টার্টআপ ফাইলে রাখতে হবে। দেখুন, একই সমস্যা উপর এই প্রশ্ন


0

এটি ব্যবহার করে দেখুন (উপরের সমাধানগুলি ব্যাশ ৪.৩ দিয়ে 100% কাজ করবে না):

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

এটি লগিং করে এবং এটি ব্যাশ ইতিহাসের ফাইলের জন্য ব্যবহৃত টাইমস্ট্যাম্পগুলিতে লগিং রোধ করে। ফাঁদটি দরকার, যেহেতু বাশ একাধিকবার স্ট্রিং + সি চাপার পরে "সাবজব" -তে সিগন্যাল প্রেরণ করবে (ব্যাশের ৪.৩ দিয়ে পরীক্ষা করা)। এটি বর্তমান ব্যবহারকারীর লগআউটকে বাধ্য করবে (উদাঃ sudo দিয়ে লগ ইন করা)


0

আপনি অ্যাক্ট ইনস্টল করার চেষ্টা করতে পারেন। অ্যাক্ট আপনার লিনাক্স সিস্টেমে কী করা হচ্ছে তার বিশদ নিরীক্ষণের ট্রেইল রাখে।

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