Это прекрасно работает в моем bash
:
$ cat hosts.txt
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.47...
telnet: Unable to connect to remote host: Connection refused
Trying 9.190.123.61...
telnet: Unable to connect to remote host: Connection refused
Однако, когда я подключаюсь к машине, которая не отказывает в соединении, я получаю:
$ cat hosts.txt
machine2
machine1
machine3
$ cat hosts.txt | while read h; do telnet $h; done
Trying 9.190.123.48...
Connected to machine2.
Escape character is '^]'.
Connection closed by foreign host.
Это потому, что я на самом деле подключаюсь успешно , а все остальные имена хостов отправляются в сеанс telnet
. Они, без сомнения, используются для попытки входа в систему, остальные имена хостов недопустимы как имя пользователя / пароль, и сессия закрывается из-за этого.
Если вы хотите просто интерактивно войти в каждую систему, вы можете использовать:
for h in $(cat hosts.txt); do telnet $h 1023; done
, который не будет захватывать остальные имена хостов в первом успешном сеансе.
Если вы хотите по-настоящему автоматизировать сеанс telnet, вам следует обратиться к инструменту, например expect
, или использовать один из инструментов удаленного взаимодействия UNIX, например rsh
.