![Netcat 实现 SpeedTouch 管理自动化](https://linux22.com/image/565530/Netcat%20%E5%AE%9E%E7%8E%B0%20SpeedTouch%20%E7%AE%A1%E7%90%86%E8%87%AA%E5%8A%A8%E5%8C%96.png)
我知道如何通过 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 并将其移动到任何您想要的位置。