首先要安装telnet和telnet-server

 

一、检测telnet-server的rpm包是否安装

OS:RedHat9

[root@locahost ~]#rpm -qa telnet-server

//出于安全考虑telnet-server.rpm是默认没有安装的,而telnet的客户端是标配。即下面的软件是默认安装的,为了方便测试,也确认一下//

[root@locahost ~]#rpm -qa telnet

telnet-0.17-25

如果没有安装,请安装telnet-server

第3张盘上有telnet-server-0.17-25.i386.rpm,进入Server目录下执行

[root@locahost ~]#rpm -ivh telnet-server*.i386.rpm

二、重新启动xinetd守护进程

由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd

[root@locahost ~]#service xinetd restart

三、测试一下

我们先来查看TCP的23端口是否开启正常

[root@locahost ~]#netstat -tnl |grep 23

tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN

如果上面的一行存在就说明服务已经运行了

这时我们可以本机通过进一步确认一下

[root@locahost ~]# telnet localhost 23

Trying telnet 127.0.0.1…

Connected to localhost.localdomain (127.0.0.1)..

Escape character is ‘^]’.

Red Hat Linux release 9 (Shrike)

Kernel 2.4.20-8 on an i686

login:

如果netstat命令没有返回内容,我们就只好继续进行更深入的配置了。

四、排除可能出现的问题

修改telnet服务配置文件

vi /etc/xinetd.d/telnet

service telnet

{

disable = yes

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

}

将disable=yes行前加#注释掉,或者把yes改为no,之后重新启动xinetd扩展守护进程

[root@localhost ~]# service xinetd restart

停止 xinetd: [确定]

启动 xinetd: [确定]

注意关闭系统防火墙对23端口的限制。

[root@localhost ~]# system-config-securitylevel

在这里我们可以开启或关闭防火墙,也可以配置防火墙

或者:

[root@locahost ~]# setup

 

然后编写perl的远程调用代码:

#!/usr/bin/perl -w
use strict;
use warnings;
use Net::Telnet;
 
my $prompt = '/> ?$|? ?$|$ ?$|> ?$|% +$|hp)s*$/'; #pattern
my $tnet=new Net::Telnet('Host'=>'192.168.1.5','Timeout'=>1, 'Prompt'=>$prompt);

##上面有IP地址,Timeout起码为1,不然会立即终止!
$tnet->waitfor('Match'=>"/login:/");
$tnet->print("ss");##登陆名称
$tnet->waitfor('Match'=>"/Password:/");
$tnet->print("123456");##登陆密码
$tnet->waitfor($prompt);
$tnet->cmd("sh s.sh");##执行命令
$tnet->close();

 

如果远端这个用户已经登陆 就会造成读取失败