如何在telnet客户端上实现命令历史logging? (上/下箭头)

我有一个接受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/; }