日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2023/12/10 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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技术博客创作平台-技术成就梦想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。