Netcat 实现 SpeedTouch 管理自动化

Netcat 实现 SpeedTouch 管理自动化

我知道如何通过 telnet 启用/禁用无线连接,但我想使其自动化。

我读到 telnet 不适合这种情况,应该使用 netcat 代替。

这就是我所拥有的:

nc 192.168.1.254 23 << EOF
username
password
:wireless ifconfig state=$1
EOF

但是当我运行它时我得到了类似这样的结果:

????????Username : Administratorfietspomp:wireless i

一些搜索出现了 -t 和 -i 选项,但都没有多大帮助。

更新

期望是:

#!/usr/bin/expect -f

set force_conservative 0  ;# set to 1 to force conservative mode even if
              ;# script wasn't run conservatively originally
if {$force_conservative} {
    set send_slow {1 .1}
    proc send {ignore arg} {
        sleep .1
        exp_send -s -- $arg
    }
}

if { [lindex $argv 0] == 1} {
    set status "enabled"
} else {
    set status "disabled"
}

set timeout -1
spawn telnet 192.168.1.254
match_max 100000
expect -exact "Username : "
send -- "username\r"
expect -exact "Password : "
send -- "password\r"
expect -exact "_{Administrator}=>"
send -- ":wireless ifconfig state=$status\r"
expect *
send -- "exit\r"
expect eof

答案1

使用autoexpect。如果您还没有该命令,请安装程序包expect

然后只需输入autoexpect并按回车键即可。接下来输入的内容将保存为script.exp。完成后,按Ctrl+d

最后,您可以使用 运行自动化版本expect ./script.exp。当然,您可以重命名 script.exp 并将其移动到任何您想要的位置。

相关内容