Проверка соединения из CSV-файла и SSH на нескольких серверах - PullRequest
0 голосов
/ 10 октября 2019

Привет всем, я пытаюсь создать сценарий, который проверяет соединение между серверами. Пока я могу подключиться по ssh к первому соединению, но не к остальным. Проблема в том, что этот скрипт читает только первую строку и использует ее в ssh. Как заставить скрипт прочитать весь файл?

while read -r line
do
    sourceip=$(echo $line | awk -F',' '{printf "%s", $1}' | tr -d '"')
    destip=$(echo $line | awk -F',' '{printf "%s", $2}' | tr -d '"')
    port=$(echo $line | awk -F',' '{printf "%s", $3}' | tr -d '"')
    ssh -o StrictHostKeyChecking=no -o BatchMode=yes root@$sourceip "nc -zv $destip  $port;exit" && echo "Done" || echo ERR
done < servers.csv

1 Ответ

1 голос
/ 10 октября 2019

Проблема здесь в том, что процесс ssh читает из stdin, потребляя остальную часть вашего ввода для чтения в цикле while. Вы можете обойти эту проблему двумя способами. Первый - использовать аргумент -n для ssh, который перенаправляет стандартный ввод из /dev/null. Другой вариант - вручную перенаправить, добавив < /dev/null в конец вашей команды ssh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...