Как выдать ошибку, если сервер не пингуется в bash - PullRequest
0 голосов
/ 01 октября 2019

У меня есть скрипт, который в настоящее время пингует некоторые серверы. если сервер поддерживает ping, скрипт с некоторыми файлами scp отправляется на этот сервер. Я хочу добавить часть, чтобы, если сервер не может выполнить проверку связи, скрипт сгенерирует сообщение об ошибке.

#!/bin/bash
ssh-copy-id localhost
#Getting list of server
server_list=${cobbler system list}
for server in ${server_list} ; do
   dns_names=${cobbler system report --name${server} | grep -i "dns name" | awk '{print $4}')
   for dns_name in $dns_name} ; do
       ping -q -c2 ${dns_name} 
       # syncing files to servers
       if [ $? -eq 0 ] ; then
          scp -r /root/.ssh/ ${dns_name}:/root/
          break
       fi

      # Throw error msg if the server is not pingable
         [code here]
      # Could anyone please help me start on how to do this task?
   done
done

1 Ответ

0 голосов
/ 01 октября 2019

На первый взгляд, похоже, что цель состоит в том, чтобы избежать ssh для недоступных хостов, что приведет к длительному (или, возможно, бесконечному) таймауту.

Стоит отметить, что возможно иметь функционал ssh / scpк серверам, которые не могут быть пропингованы. Это может быть верно для сервера за брандмауэрами, прокси-серверами и т. Д.

Альтернативным подходом может быть наложение таймаута на scp

scp -o'ConnectTimeout 5' ...
# OR
timeout 5 scp ...

Примечание по безопасности: Выполнение scp до полного ~Папка / .ssh может быть рискованной. Обычно вы хотите скопировать свой открытый ключ и сохранить свои закрытые ключи на локальном компьютере. Подумайте о том, чтобы уменьшить область копирования только до тех файлов, которые вам нужны.

...