ssh ломается, пока смотрит, несмотря на ssh -n - PullRequest
0 голосов
/ 07 июня 2019

ssh ломается при просмотре несмотря на ssh -n

Мне нужно подключиться к нескольким серверам и запустить там некоторые команды. К сожалению, ssh в то время как цикл прерывает цикл

Существует hosts.txt:

10.168.2.27
10.168.3.95

И это сценарий:

#!/bin/bash

filename="$1"
while read f1
do
     echo "Logging into $f1"   
     ssh root@$f1 'hostname; uptime' < /dev/null

done <"$filename"

Я тоже пробовал ssh -n, но результат всегда один и тот же, цикл прерывается после 1-й строки hosts.txt

Что не так с моим сценарием?

1 Ответ

1 голос
/ 07 июня 2019

read имеет ненулевой статус выхода, если не находит новой строки, поэтому, хотя он будет читать все, что осталось от файла, тело цикла не будет введено.Существует два решения:

  1. Убедитесь, что вы читаете из POSIX-совместимого текстового файла, что означает, что каждая строка заканчивается \n.

  2. Измените ваше условие на

    while read f1 || [ -n "$f1" ]; do
    

    , которое будет иметь ненулевой статус выхода, пока read может читать что-то .

Первый вариант предпочтительнее.

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