【问题标题】:Using expect on a Mac to access a router via telnet在 Mac 上使用 expect 通过 telnet 访问路由器
【发布时间】:2015-07-26 17:45:22
【问题描述】:

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

问题是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 的指令。有人可以帮帮我吗?

【问题讨论】:

  • 这些说明必须在哪里给出?

标签: macos telnet expect


【解决方案1】:

您不必使用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"

【讨论】:

  • Exec 没有工作(它回复“无法写入文件 /dev/udp/192.168.0.1”或类似的东西),但系统工作正常。非常感谢。
  • 刚刚意识到/dev/udp/192.168.0.1/23 语法是bash 特定的。我更新了exec 命令以使用bash
猜你喜欢
  • 1970-01-01
  • 2014-08-24
  • 2021-10-09
  • 2017-06-20
  • 2017-02-02
  • 2012-06-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多