Проблема с отправкой команд в микротик через telnet с использованием скрипта ожидаемого - PullRequest
1 голос
/ 26 марта 2019

Моя задача - создать автоматический скрипт, который отправляет команды на маршрутизатор mikrotik через telnet. Я пытаюсь создать сценарий "ожидай".

Но я застрял в части отправки команд. Автономный вход в систему работает хорошо (первый код), но когда я добавляю другую команду (второй код), консоль застревает на пароле (https://imgur.com/WqXjyUP) на несколько секунд, а затем я получаю вывод в картинке: https://imgur.com/BR6a2q6

Первый код для входа в маршрутизатор. Этот отлично работает.

spawn telnet "12.12.13.44";
expect "Login: ";
send "admin\r";
expect "password: ";
send "admin\r";
interact;

и вот тот же код после добавления команды, я хотел бы отправить

spawn telnet "12.12.13.44";
expect "Login: ";
send "admin\r";
expect "password: ";
send "admin\r";
expect "> ";
send "ip firewall filter add chain=forward src-address=34.54.32.33 action=log\r";
exit;

Я получил такой же вывод при использовании скрипта без ожидания, который я пробовал перед «ожидаем»

(
echo open "12.12.13.44"
sleep 2
echo "admin"
sleep 2
echo "admin"
sleep 2
echo "ip firewall filter add chain=forward src-address=34.54.32.33 action=log"
sleep 2
echo "exit"
) | telnet

PS. Я использую Debian версии 8 и RouterOS 6.34.4

PPS. Ранее упомянутые устройства предназначены для загрузки окончательного решения, у меня есть еще один маршрутизатор и компьютер (Ubuntu 18.10 и RouterOS 6.44.1), где я пробую свои сценарии и вывод, который я показал на рисунке, который отображается на обоих моих маршрутизаторах и компьютерах.

Буду благодарен за любые советы по моей проблеме.

1 Ответ

0 голосов
/ 28 марта 2019

Я нашел решение по адресу: https://wiki.mikrotik.com/wiki/Manual:Console_login_process#FAQ. Проблемный вывод исчез после того, как я добавил "+ t" после имени для входа.

...