我的任务是创建自动脚本,它通过telnet向mikrotik路由器发送命令。我正在尝试创建"expect“脚本。
但是我被命令发送部分卡住了。独立登录运行良好(第一个代码),但当我添加另一个命令(第二个代码)时,控制台在密码(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;
在没有expect的情况下使用脚本时,我得到了相同的输出,这是我在"expect“之前尝试过的。
(
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。之前提到的网络设备是用于上传最终解决方案的,我有另一个路由器和计算机(Ubuntu18.10和RouterOS 6.44.1),在那里我尝试我的脚本和输出,这是我在图片中显示的,在我的路由器和计算机上。
如果您对我的问题有任何建议,我将不胜感激。
发布于 2019-03-28 19:34:17
我在https://wiki.mikrotik.com/wiki/Manual:Console_login_process#FAQ上找到了解决方案。在登录名后添加"+t“后,有问题的输出消失了。
https://stackoverflow.com/questions/55361552
复制相似问题