আমাকে পাঠ্য বার্তা প্রেরণের জন্য কমান্ড কীভাবে তৈরি করবেন এটি ব্যর্থ হয়েছে বা পাস হয়েছে কিনা?


0

আমি একটি কমান্ড তৈরি করার চেষ্টা করছি যা আমাকে পাঠানো বার্তাটি প্রেরণ করবে বা ব্যর্থ হোক না কেন।

এখনও পর্যন্ত আমার আদেশটি এরকম দেখাচ্ছে:

command && echo OK || echo Failed | echo ' 'at `date | sendmail 5556667777@vtext.com

সুতরাং যখন পাঠটি পাস হবে তখন আমি এটি একটি পাঠ্য আমাকে পাঠাতে চাই (আমাকে একটি ইমেল প্রেরণ করে) এবং পাঠ্যটি নীচে পড়তে হবে:

ঠিক আছে 2 মার্চ 2:37 pm

এবং যখন পরীক্ষাটি ব্যর্থ হয় তখন এটি আমার এই পাঠ্য হওয়া উচিত:

2 মার্চ 2:37 pm এ ব্যর্থ হয়েছে।

echoআউটপুটগুলি কীভাবে সঠিকভাবে সংঘবদ্ধ করা যায় তা সম্পর্কে আমি নিশ্চিত নই এবং আমি আশা করছি যে আমার সমস্যাটি কোথায় রয়েছে তা কেউ জানে। শেলটি হ'ল tcsh

সম্পাদনা করুন:

'Ls' এর মতো কোনও কিছুর জন্য আমি টার্মিনালে তালিকাভুক্ত ডিরেক্টরিগুলি চাই, তবে আমি "ওকে" বা "ব্যর্থ" "সেন্ডমেল" অংশে যেতে চাই। সুতরাং সমস্ত কমান্ডগুলি যথারীতি টার্মিনালে প্রিন্ট করা উচিত তবে প্রেরণ করুন ব্যর্থ 'বা' ঠিক আছে 'প্রেরণ মেল অংশ।


কামিলমাসিরিওস্কি, আমি "অবৈধ ভেরিয়েবলের নাম" পেয়েছি। আমি কমান্ড লাইন বিটিডব্লিউতে এটি করার চেষ্টা করছি। টিসিএসএইচ শেল।
ভেরিডিয়ান

উত্তর:


0

ওপির মন্তব্য:

lsআমি টার্মিনালে তালিকাভুক্ত ডিরেক্টরিগুলির মতো কিছু চাই , তবে আমি "Ok" বা "ব্যর্থ" sendmailঅংশে যেতে চাই ।

আমি এই কাজ করতে পারবেন না tcsh। এতে কাজ করা উচিত bash:

your_command ; { [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at `date`" ; } | …

আমি আশা করি যে কেউ এখান থেকে নেবেন, উপরের লাইনটি পোর্ট করবেন tcshএবং আরও ভাল উত্তর লিখবেন।

আমি মনে করতে পারি সেরাটি হ'ল bashস্ক্রিপ্ট, যদি কেবল bashমেশিনে থাকে on বিন্দু আপনার পক্ষ থেকে এমন একটি স্ক্রিপ্ট চালাতে পারে tcsh। এটি দ্রুত এবং নোংরা লিপি:

#!/bin/bash
"$@"
{ [ $? -eq 0 ] && echo -n OK || echo -n Failed ; echo " at `date`" ; } | sendmail 5556667777@vtext.com

আপনার প্রয়োজন হলে শেবাংটি সংশোধন করুন। এই কোডের টুকরোটি কোনও ফাইলে সংরক্ষণ করুন (উদাহরণস্বরূপ sendstatus.sh), এটি দিয়ে কার্যকরকরণযোগ্য করুন chmod, তারপরে এটি ব্যবহার করুন:

./sendstatus.sh your_command
./sendstatus.sh your_command --with option -s
./sendstatus.sh ls
./sendstatus.sh ls -sl

সমাধানগুলি:

  • echo -nপরবর্তী echoএকই লাইনে চালিয়ে যেতে কারণ ;
  • শেষটি echoপাইপ থেকে পড়েনি কারণ এর কোনও বুদ্ধি ছিল না;
  • date ভিতরে `চিহ্ন (কমান্ড প্রতিস্থাপন);
  • কমান্ডগুলি ডিলিমিটর দ্বারা গোষ্ঠীভুক্ত করা হয় {}যাতে তাদের আউটপুট |পুরোপুরি ফাইনালে পৌঁছে যায়।

আমি পেয়েছি: Command: কমান্ড পাওয়া যায় নি।
ভেরিডিয়ান

দুঃখিত, এটি কাজ করে না। সুতরাং যখন এটি পাস হয়, এটি কমান্ডের আউটপুটও পাশ করে চলেছে, আমি কেবল "ঠিক আছে তারিখ" বা "তারিখে ব্যর্থ" অংশটি চাই
ভেরিডিয়ান

@ ভেরিডিয়ান এখন কীভাবে?
কামিল ম্যাকিয়েরোভস্কি

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

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