Несколько лет назад я использовал приведенный ниже метод для запуска программы оболочки в параллельном режиме, чтобы открыть несколько сеансов ssh за раз, чтобы получить быстрый результат.
Я знаю, что есть множество других хороших утилит, однако из-за некоторых насущных потребностей, которые я использую таким образом, этот грязный фрагмент кода работает хорошо, однако я хотел бы знать, есть ли какие-то предложения по его дальнейшему улучшению, учитывая тот факт, что я должны использовать его по ряду веских причин перед другими лучшими инструментами.
#!/bin/bash
echo "$(date) Starting the SSH Connection Check...."
#set -x
read -rsp $'Please Enter password below: ' SSHPASS
export SSHPASS
SSH_Connection () {
hostTarget=${1}
sshpass -e ssh -q "${hostTarget}" "true" -o StrictHostKeyChecking=no -o ConnectTimeout=60 2>>/dev/null
if [[ $? -eq 0 ]]
then
echo "$CurrntTime $MachineName : SSH connection is Up"
elif [[ $? -eq 255 ]]
then
echo "$CurrntTime $MachineName : SSH Authentication Failed"
elif [[ $? -eq 2 ]]
then
echo "$CurrntTime $MachineName : SSH connection is Down"
elif [[ $? -eq 1 ]]
then
echo "$CurrntTime $MachineName : SSH Authentication Failed"
else
echo "$CurrntTime $MachineName : SSH connection is Down"
fi
}
HostList=$(<~/host2)
CurrntTime=$(date +'%m/%d/%Y %T')
for MachineName in ${HostList}
do
SSH_Connection "${MachineName}" &
done
# wait for all outstanding background jobs to complete before continuing
wait
# at last clear the exported variable containing the password
unset SSHPASS