আর্জেগের দ্বারা স্ক্রিপ্টের আরেকটি বিকল্প হ'ল বাশ ফাংশন:
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}"
প্রথম থেকে শেষ পর্যন্ত সমস্ত পরামিতিগুলির তালিকায় প্রসারিত হয় (আক্ষরিক অর্থে কম পরামিতির সংখ্যা)।