LINUX.ORG.RU

Проблема с ssh в баш скрипте

 , ,


0

2

День добрый. Пишу скрипт который подключается по ссш на машину и выполняет команды. Была укорчоеная версия скрипта без проверки и тд... там с ссш проблем небыло, тут начало писать: Pseudo-terminal will not be allocated because stdin is not a terminal. - это я поправил добавлением ключа -Т потом стало писать: ssh: Could not resolve hostname : No address associated with hostname айпишник доступен и ручками подключается, так что проблема скорее всего в скрипте, но немогу понять где=( хэлп!) скрипт запуская так -# ./restart.sh

#!/bin/bash

function validateIP(){
         local ip=$1
         local stat=1
         if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
                OIFS=$IFS
                IFS='.'
                ip=($ip)
                IFS=$OIFS
                [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
                && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
                stat=$?
        fi
        return $stat
}

echo "Enter IP Address"
while read ip;
do
  if [ -z "$ip" ];
  then
    while read line;
     do
      sshpass -p "pass" ssh -T root@$ip <<'EOF'
      service qpidd stop
      rm -rf /var/spool/qpid/*
      service qpidd start
      service sync-core2 restart
EOF
  done < ip.ip
  else
    validateIP $ip
    if [[ $? -ne 0 ]];
    then
      echo "Invalid IP Address ($ip)"

    else
      echo "$ip is a Perfect IP Address"
      echo $ip >> ip.ip
    fi
fi
done
rm ip.ip


Последнее исправление: Flover (всего исправлений: 1)

что-то я логики с первого взгляда не уловил.

Если передали скрипту адрес, проверили его и занесли в файл, то когда выполнится условие, что переданный параметр командной строки пустой и надо прочитать адрес из файла?

nerve ★★
()
Ответ на: комментарий от nerve

Логика скрипта такая: Он спрашивает - Введите айпи вводишь айпи, запускается проверка верный он или нет, если верный то заносит в файл, если нет то не заносит и просит ввести еще раз. можно вводить много айпишников. что бы запустить выполнение команд на хостах нужно нажать энтер - тоесть ввести пустую строку.

Flover
() автор топика

ping 0x57FAFAF2 is a Perfect IP Address

без проверки и тд... там с ссш проблем небыло

вот и не надо тебе делать проверку.

system-root ★★★★★
()
Ответ на: комментарий от system-root

а хочется мне... дело не в првоерке ваще, она отрабатывает и кладет айпишники в файл. НЕ РАБОТАЕТ ССШ в рамках скрипта

Flover
() автор топика
Ответ на: комментарий от zolden

спасибо за информацию по отладке, помогло.

Flover
() автор топика

косяк в моей внимательности) должно быть так:

    while read line;
     do
      sshpass -p "pass" ssh -T root@$line <<'EOF'
      service qpidd stop
      rm -rf /var/spool/qpid/*
      service qpidd start
      service sync-core2 restart
EOF
    done < ip.ip

Flover
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.