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();
linux perl telnet安装,51CTO博客-专业IT技术博客创作平台-技术成就梦想相关推荐
- linux perl telnet安装,linux @ Net :: Telnet和vt-100终端的Perl问题
我需要Net:Telnet的帮助.尝试连接到VT-100终端.从控制台使用正常的telnet时,它工作正常.我可以连接和发布命令,但是当我尝试从perl中得到相同的结果时,它会连接,但之后没有任何反应 ...
- linux perl telnet安装,Perl--Net::Telnet模块
1.到search.cpan.org去下载一个Net::Telnet(http://search.cpan.org/CPAN/authors/id/J/JR/JROGERS/Net-Telnet-3. ...
- pxe安装linux dhcp失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想
原理有必要说明一下 (百度偷来的) 原理和概念: 1.1 什么是PXE 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含 ...
- linux主节点启动nfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想
Windows系统之间下以实现文件和目录的共享,那么在linux系统下面是否也可以实现了,我们就测试一下: 在linux下面实现目录共享的软件是nfs 要配置nfs服务首先要配置rsh服务才可以,具体 ...
- linux实时备份,51CTO博客-专业IT技术博客创作平台-技术成就梦想
rsync缺点/不足: 1.rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分, ...
- linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
网上找了很多文档都访问不了salt-api,搞了好半天,终于弄好了,写个笔记,方便以后查询 如果需要通过第三方来调用SaltStack时,使用SaltStack自带的Python API并不能很好的满 ...
- linux初学文档,51CTO博客-专业IT技术博客创作平台-技术成就梦想
linux 里 一切皆文件 7种文件类型: 普通文件 f d 目录 b 块设备 /dev/sda /dev/sda1 /dev/sr0 c 字符设备 /dev/pts/0 /dev/ tty0 #tt ...
- linux+sasl认证失败,51CTO博客-专业IT技术博客创作平台-技术成就梦想
一.为postfix开启基于cyrus-sasl的认证功能. 修改/etc/sysconfig/saslauthd文件中的 MECH=pam 改为 MECH=shadow 启动saslauthd se ...
- linux a8启动过程,51CTO博客-专业IT技术博客创作平台-技术成就梦想
Linux系统启动流程之kernel 1.内核参数修改方法: 2.内核内核模块管理: 3.内核编译 用户空间访问.监控内核的方式:/proc, /sys 伪文件系统 /proc/sys: 此目录中的文 ...
最新文章
- python多元线性回归模型_python – 使用Tensorflow的多元线性回归模型
- nchar,char,varchar与nvarchar区别(收藏)
- WebService怎样在IIS上部署
- 解决DataGridView绑定List后不能排序的问题
- canvas生成二维码(2)
- c语言比较大小 谁大选谁,C语言比较优先级
- 解读中国杰出CFO之道
- 开启apache服务
- 大数据_Flink_数据处理_运行时架构2_作业提交流程_抽象架构---Flink工作笔记0017
- ubuntu ssh 登录日志_全球第一开源ERP Odoo操作手册 安装ssh服务和ssh客户端
- Word文档编辑技巧(一)
- python多进程调度模块multiprocessing实践实践
- ADO SQL手写分页
- 操作系统课程设计报告(文件系统)
- 360云盘 linux客户端,360安全云盘Linux界面版下载,包括深度版,支持龙芯/兆芯/飞腾芯片...
- 数据分析36计(23):长期转化率 A/B 实验的问题,用边际结构模型纠正后结论反转...
- Facebook自家数据外泄
- 等保2.0linux测评指南
- 学习使用solr时遇到的一些问题,记录
- 富文本编辑器实现导入word
热门文章
- 用java判断一个年份是否为闰年_判断闰年还是平年
- 分数转小数C语言,这是把小数转换成分数的程序,可是输入0.6666无限循环
- mysql索引引擎_mysql搜索引擎和索引那些事
- 【机器视觉学习笔记】Harris 角点检测算法(C++)
- Workbox.strategies v3.x 中文版
- Linux 设备驱动中的 I/O模型(一)—— 阻塞和非阻塞I/O
- fatal error C1083: 无法打开包括文件:dxtrans.h: No such file or directory
- 【Visual C++】游戏开发笔记十九 DirectX与OpenGL的博弈
- OpenWrt 之 MT7628 移植第三方SPI驱动
- 安卓BLE开发教程(一) BLE基础