在 Mac 上使用 expect 通过 telnet 访问路由器

Using expect on a Mac to access a router via telnet

我正在尝试在 Mac 上编写一个脚本,它应该通过 telnet 访问路由器。这是为了增强路由器的功率,这是通过网络无法做到的。

问题是 telnet 通道被阻塞了,为了解锁它我需要 运行 以下指令:

/users/shared/telnetenable - 200CC8132A36 admin password >/dev/udp/192.168.0.1/23

现在,我可以打开一个 telnet 连接,但为了向路由器发送命令,我需要使用 expect 完成所有这些操作。所以,我的文件开始于:

#!/usr/bin/expect -f

并且所有指令都以 spawn 开头,例如

spawn telnet 192.168.0.1

而发送到路由器的命令是:

send "wl -a wl0 txpwr 100\n"

我的问题是我不知道如何 运行 通过 spawn 解锁路由器上的 telnet 的指令。有人可以帮助我吗?

您不必使用 spawn 到 运行 非交互式命令。 Tclexec命令就够了。例如:

#!/usr/bin/expect

# the ``/dev/udp/host/port'' syntax is bash specific
exec bash -c "/users/shared/telnetenable - 200CC8132A36 \
              admin password > /dev/udp/192.168.0.1/23"

spawn telnet 192.168.0.1
... ...

Expect 也有一个 system 命令所以你也可以

system "/users/shared/telnetenable - 200CC8132A36 \
        admin password > /dev/udp/192.168.0.1/23"