সার্ভারে লগইন করতে এবং একটি ডিস্ক ব্যবহার ইমেল করতে শেল স্ক্রিপ্ট তৈরি করুন


0

আমি একটি শেল স্ক্রিপ্ট তৈরি করতে চাই যে এটি কোনও সার্ভারে লগইন করবে, সার্ভার থেকে ডিস্কের ব্যবহার পাবে, আমাকে ইমেল করবে এবং তারপরে সার্ভার থেকে প্রস্থান করবে। এছাড়াও, সম্ভব হলে এটি প্রতিদিন করুন। এটি আমার কাছে রয়েছে:

#!/usr/bin/bash

ssh -p 1111 server@server.example.com

CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')

mail -s 'Disk Space Alert' username@example.com << EOF
Disk usage is at:  $CURRENT%
EOF
fi

শেল স্ক্রিপ্টটির নাম উদাহরণস্বরূপ sh আমি যখন এটি চালাচ্ছি, এটি আমাকে পাসওয়ার্ডের জন্য জিজ্ঞাসা করে এবং আমি লগ ইন হয়ে গেলে কিছুই হয় না।


আপনি উবুন্টুতে আছেন? bashহয় /bin/bash, না ভিতরে /usr/bin। এবং আপনি কি sshসার্ভারের পরে কমান্ডগুলি চালিত করতে চান ?
مورু

হ্যাঁ আমি উবুন্টুতে আছি ঠিক আছে, আমি চাই .sh সার্ভারের সাথে সংযোগ স্থাপন করতে এবং এটি সার্ভারে থাকা ডিস্কের ব্যবহার পরীক্ষা করতে এবং তারপরে সেই তথ্য ইমেল করে।
এম 123

উত্তর:


1

প্রথমে কেন কিছুই ঘটে না তা ব্যাখ্যা করার জন্য, সম্ভবত সিনট্যাক্সের কারণে। আপনার ssh কমান্ডটি ফর্মটির মধ্যে রয়েছে: ssh serverএটি যখন আপনি কেবল লগইন করতে চান এবং তারপরে ম্যানুয়ালি ইন্টারেক্টিভভাবে কয়েকটি কমান্ড টাইপ করেন। তবে আপনি যদি লগইন করার পরে কিছু কমান্ড স্বয়ংক্রিয়ভাবে চালিত হতে চান তবে আপনার করা উচিত: ssh server somecommandসুতরাং কেবল somecommandপরের লাইনে থাকা কার্যকর হবে না।

ঠিক আছে, আপনি যখনই ইমেইল ডিস্ক স্পেস তথ্য উভয়টিতে একটি সিস্টেম চান এবং একই সময়ে নির্ধারিত ইমেলগুলিকে সমর্থন করেন তবে আমি একটি তিনটি অংশের সিস্টেমের প্রস্তাব করব:

  • সার্ভারে একটি স্ক্রিপ্ট যা ডিস্কের তথ্য এবং ইমেল যুক্তি অর্জন করে, উদাহরণস্বরূপ /home/yourusername/script.sh
  • স্ক্রিপ্ট.শ চালানোর জন্য crontab
  • আপনার স্বেচ্ছাচারিতার জন্য, অন-অনুরোধের অনুরোধগুলির জন্য আপনি স্ক্রিপ্টটি ছড়িয়ে দিতে এবং চালাতে পারেন

script.sh

এটি সার্ভারে আপনি দেওয়া স্ক্রিপ্ট, উদাহরণস্বরূপ /home/yourusername/script.sh এ।

#!/bin/bash

s="Disk Space Alert: $(df / | grep / | awk '{ print $5}')"

mail -s $s username@example.com

# Feedback
echo $s

আমি এটি সরিয়ে দিয়েছিলাম sedকারণ এটি কেবল %চিহ্নটি সরিয়েছে তবে আপনি এটি পরে যুক্ত করছেন, এটি সেডের অপ্রয়োজনীয় ব্যবহার বলে মনে হচ্ছে তাই আমি এটি সরিয়ে ফেললাম।

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

নিম্নলিখিতরূপে crontab পরিবর্তন

আপনার সার্ভারে ক্রোনট্যাব সম্পাদনা করুন, উদাহরণস্বরূপ আপনার সার্ভারে ssh করুন এবং তারপরে এই আদেশগুলি দিয়ে এগিয়ে যান

$ crontab -e

আপনি ফর্ম্যাটটি জানেন

# m h dom mon dow  command

প্রতিদিনের জন্য সকাল 8 টা

0 8 * * * /home/yourusername/script.sh

সুতরাং আপনি যতক্ষণ না স্ক্রিপ্টটি ইতিমধ্যে পরীক্ষা করেছেন এবং জানেন যে এটি ইমেলগুলি প্রেরণে কাজ করে, তারপরে ক্রন্টব স্ক্রিপ্টটি চালাবে এবং ইমেলটি প্রতিদিন সকাল ৮ টায় প্রেরণের জন্য প্রেরণা দেবে

ডিস্কের তথ্য ইমেল করার জন্য নির্বিচারে অনুরোধ

আপনি শুধু ssh কিন্তু শেষ স্ক্রিপ্ট কমান্ড

ssh -p 1111 server@server.example.com /home/yourusername/script.sh

এটি ssh সিনট্যাক্স ব্যবহার করে ssh server somecommandতাই এটি লগ ইন করে, যে কোনও কমান্ড কার্যকর করে এবং ফলাফলটি স্থানীয় মানের বাইরে দেয় to

কারণ এতে প্রতিক্রিয়া লাইন রয়েছে, কেবল এটি ইমেল করা উচিত নয়, আপনি Disk Space Alert: ...বার্তাটিও দেখতে পাবেন যাতে আপনার স্ক্রিপ্টটি চালিত হয়েছিল কিনা তা আপনি অন্তত অবিলম্বে প্রতিক্রিয়া পান।


সুতরাং আমি সত্যিই এই অংশটি বুঝতে পারি না "আপনার স্বেচ্ছাসেবী জন্য, অনুরোধের জন্য আপনি স্ক্রিপ্টটি চালনা এবং সম্পাদন করতে পারেন" "আমাকে কি অন্য একটি .sh তৈরি করতে হবে? বা শুধু স্ক্রিপ্ট.শ এর নীচে রাখুন?
এম 123

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

3

প্রথমে পাসওয়ার্ড ছাড়াই দূরবর্তী সিস্টেমে লগ-ইন করতে ব্যবহারের জন্য একটি সর্বজনীন কী তৈরি করুন:

ssh-keygen -t rsa -b 4096 -C "your_username"

এটি আপনার ~/.ssh/ডিরেক্টরিতে একটি 4096-বিট আরএসএ কী উত্পন্ন করবে যা আপনার ব্যবহারকারী নাম হিসাবে লেবেল হিসাবে থাকবে। তারপরে, এই এসএস-এজেন্টে এই নতুন কীটি যুক্ত করুন যাতে আপনি এসএসএইচের মাধ্যমে সংযোগ করার সময় এটি ব্যবহৃত হয়।

ssh-agent -s
ssh-add ~/.ssh/id_rsa

আপনি যদি কী প্রজন্মের সময় কোনও কাস্টম নাম সেট id_rsaকরেন তবে সেই নামটি দিয়ে প্রতিস্থাপন করুন ।

এখন, আপনার ক্লিপবোর্ডে আপনার সর্বজনীন কী সামগ্রীগুলি অনুলিপি করুন।

clip < ~/.ssh/id_rsa.pub

এরপরে, রিমোট সার্ভারে লগ ইন ssh -p YOURPORT user@remote.hostকরুন এবং দূরবর্তী ব্যবহারকারীর authorized_keysফাইলটি সম্পাদনা করুন।

vim .ssh/autorized_keys

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

এখন, example-script.shআপনার দূরবর্তী হোস্টের হোম ডিরেক্টরিতে আপনাকে একটি স্ক্রিপ্ট তৈরি করতে হবে ( chmod a+x example-script.shপরে এটি নির্বাহযোগ্য হিসাবে সেট করার বিষয়ে নিশ্চিত হন )।

#!/usr/bin/env bash
CURRENT=$(df / | awk '/\// { print $5}' | sed 's/%//g')
mail -s 'Disk Space Alert' username@example.com << EOF
Disk usage is at:  $CURRENT%
EOF

এবং এখন, local-script.shকমান্ডটি সহজেই চালানোর জন্য আপনার স্থানীয় হোম ডিরেক্টরিতে একটি স্ক্রিপ্ট তৈরি করুন (আবার এটি কার্যকর করার পরে নিশ্চিত করুন)।

#!/usr/bin/env bash
ssh -P YOURPORT user@remote.host ./example-script.sh

এই স্ক্রিপ্টটি আপনাকে ./local-script.shকেবল একটি লাইনে আপনার দূরবর্তী স্ক্রিপ্টটি চালানোর জন্য আপনার হোম ডিরেক্টরি থেকে চালানোর অনুমতি দেয় । এরপরে আপনি এটিকে আপনার .bashrcফাইলের একটি উপনাম হিসাবে যুক্ত করতে পারেন যাতে আপনি কেবল চালাতে পারেন local-scriptবা অন্য যে কোনও উপনাম আপনি চান। এছাড়াও আপনি সুনির্দিষ্ট পাথ (ব্যবহার করতে পারেন /home/your_username/local-script.shমধ্যে) crontabএটা প্রতিদিন একটি নির্দিষ্ট সময়ে রান করতে হবে।

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