Ssh ওভার ব্যাচ মোডে কমান্ড কিভাবে চালানো যায়?


9

আমি কীভাবে ssh ওভার ব্যাচ মোডে কমান্ড চালাতে পারি? অর্থাৎ, sshকমান্ডের সমতুল্য sftp -b <filename> <hostname>কী?

আমার কাছে কমান্ডগুলির একটি সেট রয়েছে যা আমি সংযোগকারী হোস্টগুলির একটি সেট জুড়ে চালাতে চাই ssh। ওভার sftp, আমি একটি ফাইলে কমান্ডগুলি সঞ্চয় করি filenameএবং হোস্টের সাথে সংযোগ করি এবং পূর্বে উল্লিখিত কমান্ডটি ব্যবহার করে কমান্ডগুলি চালিত করি।

এরকম কিছু কি সম্ভব ssh?


আমি এই প্রশ্ন দিয়ে গেছে । তবে আমি এখনও ব্যাচ মোডে কমান্ডগুলি কীভাবে চালাতে পারি তা বুঝতে পারি না।
শ্রীকান্ত

এবং কেউ দয়া করে # ব্যাচমোড ট্যাগ তৈরি করে এই প্রশ্নটিকে ট্যাগ করতে পারেন?
শ্রীকান্ত

উত্তর:


9

আমি ভুল হলে আমাকে সংশোধন করুন তবে মনে হচ্ছে আপনি স্ক্রিনটি স্থানীয় যেখানে দূরবর্তী সার্ভারে নিয়মিত শেল কমান্ড চালাতে চান।

#!/bin/sh
trap "rm -f /tmp/sendonssh.$$.*" 0 1 2 3 15
# commands to run on the remote server
cat <<'EOF' >> /tmp/sendonssh.$$.sh
mkdir -p /tmp/foobar.$$
mv $HOME/xyzzy /tmp/foobar.$$
chmod 640 $HOME/xyzzy
EOF
# call for each argument
for userhost in "$@"; do
    errorout=`ssh -aTxo BatchMode=yes $userhost /bin/sh -s < /tmp/sendonssh.$$.sh 2>&1`
    rc=$?
    if [ $rc -ne 0 ]; then
        echo "Error: $userhost: $errorout"
        exit $rc
    fi
done

আমি শেলটির পরিবর্তে পাইথন ব্যবহার করে আমার পরীক্ষার পরিবেশে কিছু 'রিমোট এক্সিকিউশন' অ্যাপ্লিকেশন দিয়ে এটি করি ssh $userhost python < $pythonscriptfilename


উত্তরের জন্য ধন্যবাদ. দেখে মনে হচ্ছে। আমি এটি কিছুটা টুইট করছি এবং এখনই চেষ্টা করছি।
শ্রীকান্ত

7

এর এসএসএইচ সমমান sftp -b <filename> <hostname>হবে:

ssh -o BatchMode=yes <hostname> sh -s < "<filename>"


3

কীভাবে এটি সহজ রাখবেন এবং অন্যান্য কম্পিউটারে "ব্যাচ" ফাইলটি চালাবেন?

  1. স্কিপ ব্যাচ-ফাইল ব্যবহারকারী @ পিসি
  2. ssh ব্যবহারকারী @ পিসি ব্যাচ-ফাইল
  3. ssh ব্যবহারকারী @ পিসি আরএম ব্যাচ-ফাইল

এবং ব্যাচ ফাইলটি একটি সাধারণ শেল স্ক্রিপ্ট হবে তাই সিনট্যাক্সটি সুপরিচিত।


0

man expect? : \

তবে এটি সঠিক উপায় নয়।


হাই jhnny8888, আমি একটি সোলারিস সার্ভারে আছি এবং প্রত্যাশার জন্য কোনও ম্যানুয়াল প্রবেশ নেই। আপনি কি দয়া করে আপনার উত্তরটি বিস্তারিতভাবে বর্ণনা করতে পারেন?
শ্রীকান্ত


@ শ্রীকান্ত: expectএমন প্রোগ্রামগুলির সাথে ইন্টারেক্ট করার জন্য ডিজাইন করা হয়েছে যা টার্মিনালে চলমান বলে মনে করে। এটি ssh ওপরে কমান্ডগুলির চলমান সমস্যার সাথে সম্পর্কিত নয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'


0

আপনি ssh জোর কমান্ড ব্যবহার করতে পারে।

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


0

আর্জেগের দ্বারা স্ক্রিপ্টের আরেকটি বিকল্প হ'ল বাশ ফাংশন:

sshbatch() {
  # Expect at least 2 parameters, if less are provided print help
  if [[ ${#@} -lt 2 ]]; then
    printf 'Usage: sshbatch [user@]host... input_file\n'
  else
    while read -r -u "$fd" host; do
      # Check if the last parameter is a readable file, else print error and exit
      [[ -r ${@:(-1)} ]] || { printf "The file ${@:(-1)} is not readable!\n"; break; }
      # Run remote bash from the file given in the last parameter
      ssh -o BatchMode=yes "$host" bash -s < "${@:(-1)}"
      # Read host list from 1st to next to last parameters
    done {fd}< <(printf '%s\n' "${@:1:${#@}-1}")
  fi
}

আমি ssh এর -Tবিকল্পটি ব্যবহার করি না , কারণ এটি সব ক্ষেত্রে এটির সাথে কাজ করে না।

এই স্ক্রিপ্টটি অবস্থানগত পরামিতি অ্যারেতে প্যারামিটার সম্প্রসারণ ব্যবহার করে $@:

  • "${@:(-1)}" শেষ প্যারামিটারে প্রসারিত হয় (আক্ষরিক অর্থে প্রথমে শেষের দিকে গঠন করা হয়)
  • "${#@}" অবস্থানগত পরামিতিগুলির সংখ্যাতে প্রসারিত হয়
  • "${@:1:${#@}-1}" প্রথম থেকে শেষ পর্যন্ত সমস্ত পরামিতিগুলির তালিকায় প্রসারিত হয় (আক্ষরিক অর্থে কম পরামিতির সংখ্যা)।

আমি এর মতো পরিবর্তনশীল বিস্তৃতিতে এতটা ভাল নই, আপনি কী চলছে তাতে কিছুটা যুক্ত করতে পারবেন? চিয়ার্স।
গাই

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