Не мог отправить пароль и имя пользователя

Не мог отправить корень и пароль после telnet. Почему?

telnet board
sleep 3
echo -e "root\n"
sleep 1
echo -e "labrat\n"
0
задан 7 January 2019 в 06:53

2 ответа

Вы не можете использовать "простой" сценарий удара для взаимодействия с a telnet сессия.

Согласно комментарию @Melebius, ответы на этот вопрос на StackOverflow предлагают, чтобы некоторые решения, как использование ожидали. Как более простая альтернатива можно передать команды по каналу к telnet:

{ sleep 3 ; echo "root" ; sleep 1 ; echo "labrat" ; sleep 1; } | telnet board

Следует иметь в виду, что этот способ, которым сессия telnet завершается вскоре после входа, обрабатывается. Если Вы хотите создать автоматизированный сценарий, это могло бы быть достаточно (но затем expect все еще лучший путь).

РЕДАКТИРОВАНИЕ согласно комментариям

Если вместо этого Вы хотите открыть интерактивное telnet сессия, но сохраняют себя "стычка" введения имени пользователя и пароля каждый раз, когда я боюсь, что нет простого решения. Можно передать имя пользователя через -l флаг (т.е. telnet -l root board) таким образом, необходимо ввести только пароль.

Похож expect может использоваться успешно для автоматизации логинов telnet при отъезде интерактивной подсказки через interact директива.

Простой базирующийся пример был бы:

#!/usr/bin/expect

spawn telnet board
sleep .3;
expect "login:"
send "root\r"
expect "password:"
send "labrat\r";
interact

Просто отредактируйте к своим потребностям.

4
ответ дан 26 October 2019 в 14:44

Я не уверен, является ли это причиной проблемы (никогда не использовал telnet сам), но echo уже добавляет новую строку при печати, таким образом, echo -e "root\n" распечатает root затем две новых строки. Вы, вероятно, хотите всего один, так использование echo "root" или printf 'root\n' вместо этого.

0
ответ дан 26 October 2019 в 14:44

Другие вопросы по тегам:

Похожие вопросы: