Ssh এর সময় কোনও ত্রুটি ঘটেছে কিনা তা কীভাবে পরীক্ষা করবেন?


8

আমি একটি স্থাপনা স্ক্রিপ্ট লিখছি, এবং কোনও ত্রুটি ঘটলে আমার রোলব্যাক করা দরকার to

উদাহরণ:

#!/bin/bash
ssh myapp '
    mkdir /some/dir
    # check if above command failed, and execute rollback script if needed
'
# or maybe do it from here?

এখনই যখন আমি এই স্ক্রিপ্টটি সম্পাদন করি, যদি এমকিডির ব্যর্থ হয়, এটি আমার স্ক্রিনে এটি প্রিন্ট করে এবং কার্যকর করা চালিয়ে যায়। আমার সেই ত্রুটিটি ধরা এবং এটি সম্পর্কে কিছু করা দরকার।

উত্তর:


6

এর প্রস্থান স্থিতিটি sshদূরবর্তী কমান্ডের প্রস্থান স্থিতি হবে। এই ক্ষেত্রে

ssh myapp 'exit 42'
echo $?

৪২ টি মুদ্রণ করা উচিত ( $?শেষ আদেশের নির্বাহের শেষ অবস্থা)।

একটি বিকল্প হ'ল mkdirব্যর্থ হলে এখনই প্রস্থান করা :

ssh myapp 'mkdir /some/dir || exit 42; do-more-stuff'
if [[ $? = 1 ]]; then
   echo "Remote mkdir failed"
fi

আপনার স্ক্রিপ্টে যে কোনও রিমোট ব্যর্থতা হ্যান্ডেল করার চেষ্টা করা ভাল, যদি সম্ভব হয়।


5

আপনার যদি সত্যিই ত্রুটি বার্তাটি ধরার দরকার হয় তবে আপনি এটি চেষ্টা করতে পারেন:

#!/bin/bash
result=`ssh myapp 'mkdir /some/dir' 2>&1`
if [[ -n $result ]]; then
    echo "the following error occurred: $result"
fi

এটির মাধ্যমে আপনি স্ট্যান্ডার্ড ত্রুটি আউটপুটটিকে স্ট্যান্ডার্ড আউটপুটে পুনর্নির্দেশ করুন এবং ssh কমান্ডের আউটপুট এতে সংরক্ষণ করুন $result। আপনার যদি কেবল ত্রুটি কোড / প্রস্থান স্থিতির প্রয়োজন হয় তবে এই উত্তরটি দেখুন

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