使用expect发送单个字节

时间:2016-11-29 11:38:09

标签: tcl expect

让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。

1 个答案:

答案 0 :(得分:0)

我的顽强完全错了。 因为我使用期望产生的“telnet”,我必须发送“CTRL”“”发送brk \ r \ n“。

一切都很好。