真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ruby_expect模塊的使用..-創(chuàng)新互聯(lián)

通過ruby實(shí)現(xiàn)類expect功能的腳本..

成都創(chuàng)新互聯(lián)專注于金山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供金山營銷型網(wǎng)站建設(shè),金山網(wǎng)站制作、金山網(wǎng)頁設(shè)計(jì)、金山網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造金山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供金山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

在ruby中有2兩種實(shí)現(xiàn)方式:

1. 利用標(biāo)準(zhǔn)庫中的Pty基于io流的方式實(shí)現(xiàn)(較為復(fù)雜,涉及到輸入輸出io流).

2. 通過rubygems利用擴(kuò)展包實(shí)現(xiàn). 本次主要介紹這個(gè)。

首先通過gem安裝軟件包:

     在國內(nèi)因?yàn)閺?qiáng)大的GFW,導(dǎo)致rubygems安裝第三方庫很慢..

     先執(zhí)行以下過程,替換gem sources。

gem sources -a https://ruby.taobao.org/      #添加淘寶源
gem sources –remove https://rubygems.org/   #刪除默認(rèn)源
gem sources -l          #查看gems源,有淘寶就OK…
gem install ruby_expect    #安裝gem包,可以加個(gè)-V看詳細(xì)過程.

以下是一個(gè)通過調(diào)用ssh命令的過程:

#!/usr/bin/ruby
require 'rubygems'                 # i hate this line, there is nothing to say
require 'ruby_expect'              # 加載ruby_expect
exp = RubyExpect::Expect.spawn('ssh kinda22@dbsa.cn -p 2188',:debug => true)                                        #通過spawn 產(chǎn)生一個(gè)命令的對(duì)象并且和它進(jìn)行交互。也可以通過connect產(chǎn)生一個(gè)socket的對(duì)象進(jìn)行交互.
exp.procedure do                   # procedure 是用于一組的模式匹配,一個(gè)實(shí)例方法,接收一個(gè)代碼塊作為參數(shù)
  any do                           # any 中指定的所有expect,如果匹配都會(huì)被調(diào)用..實(shí)際中,主要截獲交互執(zhí)行等,都要在any中進(jìn)行...
    expect /continue connecting / do       #捕獲提示... //內(nèi)的是正則匹配
      send 'yes'                           #發(fā)送yes
    end
    expect /password/ do                   #捕獲password提示
      send "123456"                        #發(fā)送密碼
    end
    expect /\$\s+$/ do                     #捕獲用戶提示字符。。
      send 'w'                             #發(fā)送w命令
      send 'df'                            #發(fā)送df命令
    end
    run                                    #輸入過程捕獲的數(shù)據(jù),會(huì)將輸出結(jié)果進(jìn)行回顯..
  end
  any do                                   #退出命令在一個(gè)any中時(shí)會(huì)不執(zhí)行,因此在第二個(gè)any block中進(jìn)行.
    expect /\$\s+$/ do                     #執(zhí)行退出..
      send 'exit'
    end
  run
  end
end

   通過以上代碼可以很容易進(jìn)行擴(kuò)展,也可以根據(jù)需要增加any block做層次劃分..

   主要就是通過expect 截獲輸出,通過send發(fā)送數(shù)據(jù).

還有其他幾個(gè)實(shí)例屬性:

#before、#buffer、#debug、#last_match、#match

主要是匹配前、緩存中、最后匹配和全部匹配的數(shù)據(jù)..

類方法:

connect(socket, options = {}, &block) 連接到一個(gè)socket

spawn(command, options = {}, &block) 產(chǎn)生一個(gè)命令并且和它進(jìn)行交互

實(shí)例方法:

expect(*patterns,&block) 通過模式進(jìn)行匹配..

initialize  通過spawn的工廠方法,直接創(chuàng)建..

procedure(&block)  創(chuàng)建一組的模式匹配, 使用了DSL….

send(command)  發(fā)送一個(gè)命令到io的寫句柄

soft_close  等待進(jìn)程完成或讀句柄關(guān)閉,然后進(jìn)行清理。會(huì)產(chǎn)生阻塞

timeout    獲取當(dāng)前timeout值

timeout=(time)  設(shè)置超時(shí)等待的時(shí)間,用于expect的匹配

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁標(biāo)題:ruby_expect模塊的使用..-創(chuàng)新互聯(lián)
文章出自:http://weahome.cn/article/dsccpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部