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

时间:2012-03-21 17:13:53

标签: linux perl automation admin telnet

我有一台服务器接受telnet连接进行管理。我想念命令历史记录,所以我想让我的telnet会话支持它。我的问题:

1)我是否必须在服务器端实现,因此服务器会将过去的命令发送到客户端,然后客户端可以重新执行?

2)无论如何都要在telnet客户端中实现这个功能(不要弄乱服务器)?

如果答案是1)那么我需要知道如何捕获并发送我的telnet会话上的向上和向下箭头键,而无需按Enter键。

3 个答案:

答案 0 :(得分:40)

这不是服务器问题。只需将rlwrap与您的telnet客户端一起使用即可。它为您readline提供了无编程。

$ rlwrap telnet server port

(实际上我使用nc代替telnet,因为它更易于使用且更强大。)

答案 1 :(得分:6)

使用socat:

socat readline,history=$HOME/.telnet_history TCP:host:23

答案 2 :(得分:1)

我假设这是您使用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/;
    }