Взлом Dirty Bash для запуска ssh-соединений в параллельном режиме

Несколько лет назад я использовал приведенный ниже метод для запуска программы оболочки в параллельном режиме, чтобы открыть несколько сеансов 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

0

Добавить комментарий

Ваш адрес email не будет опубликован.