linux perl telnet安装,51CTO博客-专业IT技术博客创作平台-技术成就梦想

Telnet是一个古老而又不安全的协议,用来实现远程登录。这种服务可以和基于客户机/服务器进行通信,也就是说把你的电脑虚拟成一个键盘(伪终端)来和远程的服务进行通信,而服务器以为输入来自它本地的键盘,我们在本地所执行的命令会发送到远程服务器执行并返回结果。Telnet是基于TCP连接,所以在建立连接之前需要握手来表明身份,即向服务器提供用户标识(登录名和密码)。Telnet服务默认监听23端口来提供服务。

在Perl中,我们使用Net::Telnet模块来提供对Telnet协议的支持。它和其它的Perl模块一样,使用面向对象的语法,因此它非常的简单。

准备工作

我们必须要开启Telnet服务,这样客户端才可以使用它进行远程登录。

查看是否安装Telnet:

# rpm -qa|grep -i telnet

如果没有,则:

# yum -y install telent telnet-server

配置Telnet:

# vi /etc/xinetd.d/telnet

把disable=yes 改成disable=no

启动Telnet:

# /etc/init.d/xinetd restart

检查是否成功启动:

# netstat -ant|grep 23 或者 # pgrep telnet

创建用户名:

# useradd telnet //默认情况root不充许Telnet登录,因为它不安全(明文传输)

设置密码

# passwd telnet

简单的尝试

如果我们要和远程的服务器进行通信,我们要提供基本的用户名和密码来表示你有权使用它:

use Net::Telnet;

my $telnet=Net::Telnet->new($hostname);

$telnet->login($usename,$password);

...

像上面这样,基本上你就可以使用Telnet来实现远程登录了。在建立链接之后,我们可以使用$telent对象来执行后续的操作,这些操作就像是在远程电脑上执行一样,这样我们就实现的远程维护系统的目的。

Telnet模块为我们提供足够的方法来实现维护系统的目的,它有而这些方法也有大量的选项供我们,所以Telnet是一个足够灵活的模块,下面就分别来说说这些方法的具体使用方法。

首先从new方法开始。

在Telnet模块中,我们调用new方法以此来创建一个telnet对象,这个对象就像是一个键盘(或者说是一个文件句柄)一样,我们通过个对象来和远程服务器进行通信。那么怎样来创建这个telnet对象呢,这就是new构造函数的用武之地了。一般来说我们可以使用以下两种方法来创建telnet对象:

1) my $telnet=Net::Telnet->new(ip或者主机名)

2) my $telnet=Net::Telnet->new(Host=>'ip或者主机名')

像上面我们用命名参数的形式去调用new方法,它还有更多的选项,这些选项可以更灵活的对对象加以控制,这些选项以"键/值"对的形式出现,这在Perl中叫做命名参数。下面是new方法常用的选项:

=====================================================================

选项描述默认值

=====================================================================

Host要连接的主机localhost

Port连接的端口23

Timeout超时(秒)10

Binmode禁止CRLF转换false

Cmd_remove_mode 从输入中删除回显命令auto

Errmode设置错误模式die[return]

Input_log输出结果日志文件名none

Fhopen用于通信的文件句柄none

Prompt匹配的命令行提示符/[\$%#>] $/

在上面这个列表中,我们一般需要设置Timeout选项,其它设为默认即可,当然如果你的telnet默认端口不是23,还得显式指定Port。至于其它的选项我们也来作一个简单的解析。

Binmode:这个用于控制CRLF转换,标准的服务器程序都以CRLF对的形式来标识每个换行字符,这样就可以明确的区分每条命令序列。如果你把Binmode设为Binmode=>true或者Binmode=>1,则数据将逐字的发送。

Cmd_remove_mode:是否删除服务器响应数据中的第一行,准确的说是删除我们发送给服务器的命令。因为这个命令会附加在服务器回应的数据名中。

Errmode:我们在连接远程服务器是不可避免的会发生错误,这个选项就是用来控制当错误发生应该怎么处理。你可以自定义处理程序来响应发生错误时要做的工作。

Input_log:它的值可以为文件名或者已经打开的文件句柄。它用来保存从服务器所接收到的数据。

Prompt:它的值应该是一个正则表达式(/pattern/),用于下面就要说的login方法的参考,来表明命令是否成功运行。

如果你已经通过new方法成功的连接到了一个远程主机的指定端口,剩下的问题就是用指定的用户名和密码进行登录,它同样也有两种方式:

1) $telnet->login($username,$password)

2) $telnet->login(

Name=>$username,

Password=>$password,

[Prompt=>$prompt,]

[Timout=>$timeout]

)

如果login如果遇到错误,则返回false。

在我们成功登录之后,如何执行命令呢?这可以通过cmd()方法来实现,cmd()的返回结果可以存放在标量或者数组中:

1) $result=$telnet->cmd($command)

2) @result=$telnet->cmd(

String=>$command,

[Timeout=>$timeout,]

[Prompt=>$pattern,]

[Output=>$ref,]

[Cmd_remove_mode=>$mode]

)

cmd()中的选项值可以覆盖掉new()方法中同名选项。

除了cmd()方法外,我们还可以使用print()方法来执行命名,然后使用waitfor()方法来获得命令执行之后的结果(成功或者失败都有一些标志,这个方法其实就是用正则去匹配结果数据)

其它可用方法:

errmsg():返回方法调用时的错误消息

lastline():返回从对象读取的最后一行文本

get(),getline(),getlines():返回Telnet会话中可用的数据

input_record_separator(),output_record_separator():定义输入记录和输出记录分隔符,默认都为\n

改变Telnet对象的默认值:

$telnet->timeout($value) #改变已经创建的Telnet对象的值

$telnet->errmode($value)

$telnet->binmode($value)

$telnet->prompt($value)

关闭Telnet连接:

$telnet->close();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hdu4473

这题的结果[f(1)f(2)...f(n)]其实就等价于x*y*z<n的解的个数&#xff0c;然后的方法几乎就是暴力枚举了。现场比赛的时候没想到这一点&#xff0c;太杯具了&#xff0c;浪费了两个小时的思考时间。其实我们的做法应该是可行的&#xff0c;因为f(n)具有积性性质&#xff0c;也…

https无法访问 宝塔_宝塔面板快速开启ssl(https)的方法

宝塔面板可以说在国内服务器配置方面是比较出名的&#xff0c;一些大的网站的服务器都是使用的宝塔面板&#xff0c;另外本博客作品的演示站点也是使用的宝塔面板。宝塔面板的操作与配置服务器环境对一些初入做站的将要跳坑的小白来说&#xff0c;就一件超越仙器的神器&#xf…

linux可以不用grub吗,既然不用Win了,那么GrubDOS也不用了。linux grub求指导

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼5、安装Grub到U盘上&#xff1a;[starlocalhost ~]$ sudo grub-install--root-directory/media/test/ /dev/sdbProbingdevices to guess BIOS drives. This may take a long time.Installationfinished. No error reported.This is…

raid 物理盘缓存状态_查看RAID状态

以下是组建服务器raid时查到的资料&#xff0c;做下笔记&#xff0c;没兴趣的朋友请无视。Linux下查看软、硬raid信息的方法。软件raid&#xff1a;只能通过Linux系统本身来查看cat /proc/mdstat可以看到raid级别&#xff0c;状态等信息。硬件raid&#xff1a; 最佳的办法是通过…

略读《大教堂与市集》

《大教堂与市集》&#xff08;The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary&#xff09;一书中提到了软工工程的两种开发模式&#xff0c;即大教堂模式和市集模式。作者认为“Given enough eyeballs, all bugs are shallow…

c语言time函数的作用,c语言中time函数的用法

c语言中time函数的用法的用法你知道吗&#xff1f;下面小编就跟你们详细介绍下c语言中time函数的用法的用法&#xff0c;希望对你们有用。c语言中time函数的用法的用法如下&#xff1a;头文件time.h函数名称: localtime函数原型: struct tm *localtime(const time_t *t…

测试nb信号的软件_NB-IOT的OTA测试(功率、灵敏度测试)

2017年7月25日新益技术实现了NB-IoT终端系统测试&#xff0c;在OTA暗室中完成了NB-IoT终端系统总辐射功率TRP(TotalRadiated Power)和总全向灵敏度TIS(Total Isotropic Sensitivity)测试。测试得到的360度全方位辐射和接收性能参数&#xff0c;为NB-IoT产品推向市场提供重要的参…

待研究

D3D中的Alpha颜色混合 &#xff08;http://www.cnblogs.com/flying_bat/archive/2007/09/20/900558.html&#xff09;转载于:https://www.cnblogs.com/chunyou128/archive/2012/11/14/2769334.html

linux内核多队列,Linux Kernel 中 Workqueue 使用系统默认队列和创建队列的方法

关于workqueue&#xff0c;我们还是有很多话要说。想必大家对workqueue相关的函数(schedule_work 、queue_work、INIT_WORK、create_singlethread_workqueue 等)都不陌生。但说起差异&#xff0c;可能还有许多话需要坐下来慢慢讲。对于workqueue&#xff0c;与之最为相关的两个…

linux扩容根目录空间_Linux系统扩容根目录磁盘空间的操作方法

Linux系统扩容根目录磁盘空间的操作方法一、使用背景Linux根目录磁盘空间不够用了&#xff0c;当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘&#xff0c;但是发现系统里的大小还是没改变。产生的原因是没有给磁盘格式化&#xff0c;没有增加分区。二、操作方法1.查看磁…

【ASP】文件上传

描述&#xff1a;在button事件中注册一个上传事件 代码详解&#xff1a; protected void FileUpload_Click(object sender, EventArgs e) { bool fileIsvaild false; //初始化一个bool型为false的fileIsvaild if (this.FileUpload1.HasFile)…

哈夫曼字符串编码c语言实现,基于哈夫曼(haffuman)算法的文件压缩的实现(C语言)(原创)...

本文首先简要阐述哈夫曼算法的基本思想&#xff0c;然后介绍了使用哈夫曼算法进行文件压缩和解压缩的处理步骤&#xff0c;最后给出了C语言实现的文件压缩和解压缩的源代码。哈夫曼算法的主要思想是&#xff1a;①首先遍历要处理的字符串&#xff0c;得到每个字符的出现的次数&…

html 长文本 截断 jquery 扩展脚本

(function ($){$.LongTextFormat function (selector, fmlength){var re /\s/g;$(selector).each(function (i){//获取td当前对象的文本,如果长度大于25; var jobj $(this);var text jobj.text();if (text){text text.replace(re, "");if (text.length > fml…

rn 滑动验证_rn-fetch-blob

1.前言 最近开发react-native的app,上传图片功能需要使用相机,发现Genymotion默认的相机不工作.查看同行的博客解决了,归纳整理一下. 2.步骤 2.1安装Genymotion:http://www.genymotion.net/ 2.2在windows电脑上安装ManyCam ...ziguiyu2019-05-15React Native最近有大动作&#…

md5生成一个加盐程序c语言,MD5在编程中的实现 (C语言)

在C语言中实现MD5算法———————————————————————————————————————————*/#ifndef PROTOTYPES#define PROTOTYPES 0#endiftypedef unsigned char *POINTER;typedef unsigned short int UINT2;typedef unsigned long int UINT4;#if PROT…