我有一个接受telnet连接进行pipe理的服务器。 我想念命令历史,所以我想让我的telnet会话支持它。 我的问题:
1)我必须在服务器端实现,所以服务器会发送过去的命令给客户端,然后客户端可以重新执行?
2)有没有在远程login客户端实现这个function(不要搞乱服务器)?
如果答案是1),那么我需要知道如何捕获和发送在我的远程login会话上的上下箭头键,而不必按下input。
这不是服务器问题。 只要使用你的telnet客户端的rlwrap 。 它给你readline
没有编程。
$ rlwrap telnet server port
(我实际上使用nc
而不是telnet
因为它更容易使用,而且更加强大。)
使用socat:
socat readline,history=$HOME/.telnet_history TCP:host:23
我假设这是一个你用Perl编写的服务,基于你的标签。
你可以使用CPAN的Term :: ReadLine模块来做你想做的事情。 从CPAN网站,这里是一个基本的例子:
use Term::ReadLine; my $term = Term::ReadLine->new('My Management Service'); my $prompt = "Enter your management command: "; my $OUT = $term->OUT || \*STDOUT; while ( defined ($_ = $term->readline($prompt)) ) { my $res = eval($_); warn $@ if $@; print $OUT $res, "\n" unless $@; $term->addhistory($_) if /\S/; }