让tcl期望连接到telnetd,并希望发送telnet BREAK。 必须提供telnetd以进入命令模式。因此,IAC(255)必须是发送者。 在此之后必须发送BRK(243)。 我用putty-> telnetd连接验证了这一点。腻子可以发送" BREAK"。网络流量显示预期的255/243
当我发送ICA(255)/ BRK(243)和tcl期望我在网络流量中看到时,发送了三个字节(255/255/243)。
当我发送时我发现了254,我看到一个字节 当我发送255.它是两个字节。 我期望255,这是-1或ff有一些特殊的期待。
我怎样才能在电线上获得255?
fconfigure $channel -translation
exp_send -i $channel -- [binary format H4 FFF3]
这发送" ff ff f3"到了telnetd
如答案所述,是的,必须考虑这种语言。所以我添加fconfigure没有
这是我的代码:
package require Expect
spawn telnet localhost
fconfigure $spawn_id -translation binary
exp_send "[binary format H4 FFf3]"
after 2000
当我用tcpdump -X -i localhost port 23
查看电汇时,我看到 FFFFF3 。
11:26:10.358187 IP localhost.44802 > localhost.telnet: Flags [P.], seq 129:132, ack 148, win 342, options [nop,nop,TS val 1826173122 ecr 1826168178], length 3
0x0000: 4510 0037 835b 4000 4006 b953 7f00 0001 E..7.[@.@..S....
0x0010: 7f00 0001 af02 0017 b004 9eec f815 49e3 ..............I.
0x0020: 8018 0156 fe2b 0000 0101 080a 6cd9 30c2 ...V.+......l.0.
0x0030: 6cd9 1d72 ffff f3
我用strace调查telnet并看到:
203 27482 12:37:28 read(0, "\377\363", 8192) = 2
204 27482 12:37:28 select(4, [0 3], [3], [3], {0, 0}) = 1 (out [3], left {0, 0})
205 27482 12:37:28 sendto(3, "\377\377\363", 3, 0, NULL, 0) = 3
fff3由expect接收,ff ff f3发送到telnetd。
答案 0 :(得分:0)
我的顽强完全错了。 因为我使用期望产生的“telnet”,我必须发送“CTRL”“”发送brk \ r \ n“。
一切都很好。