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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Expect 在网络管理中发挥着重要作用

發布時間:2025/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Expect 在网络管理中发挥着重要作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接

廢話 可忽略


?

接觸Expect是迫不得已。系統管理員在工作中經常會遇到這樣的問題,需要實現一個自動交互的工具,這個工具可以自動Telnet或者Ftp到指定的服務器上,成功login之后自動執行一些命令來完成所需的工作。

  當然,有很多編程語言可以去解決此類問題,比如用C、Perl、或者Expect。

  顯然,盡管C是無所不能的,但是解決此類問題還是比較困難,除非你熟悉Telnet或者Ftp協議。

  曾經見過別人用C實現了一個簡單的Telnet客戶端協議的程序,可以在這個程序加入自己的代碼來捕獲服務端的輸出,根據這些輸出來發送適當的指令來進行遠程控制。

  使用Perl一樣可以實現這樣的功能,然而,Expect做的更出色,而且除支持Unix/Linux平臺外,它還支持Windows平臺,它就是為系統管理和軟件測試方面的自動交互類需求而產生的


介紹Expect的時候,不得不說到TCL,畢竟這個語言是用TCL寫的,于是,其中除了部分的自有命令外,語法也都是TCL的語法,所以在Expect教程里面,將會重點通過一些程序來介紹Expect的功能。

先看一個最簡單的Expect程序

#!/usr/bin/expect

set timeout 10

spawn telnet 10.80.1.23

expect "login:"

send "user\r"

expect "Password:"

send "123456\r"

expect "%"

puts “Telnet connection established”

對于Expect程序,是可以以tcl后綴名結尾的,上一個程序的名字為testTelnet.tcl,且執行方法和tcl也一致,直接./testTelnet.tcl即可,但是注意文件的第一行,在TCL程序中,第一行的內容為

#!/usr/bin/tclsh

而在這里變為了

#!/usr/bin/expect

?

這個程序的作用如下,

1.?????????建立一個到10.80.1.23的telnet連接,由spawn telnet 10.32.17.10來完成,

2.?????????等待屏幕打印login,由expect “login:”來實現

3.?????????然后發送用戶名user,由send “user\r”來完成,其中\r表示在輸入user后按下回車鍵

4.?????????等待屏幕打印Password:,由expect “Password”來實現

5.?????????發送密碼123456,同第3步

6.?????????等待登錄成功的提示符%

7.?????????輸出登錄成功消息

這是自動通過telnet登錄的程序,基本上程序中的每句話都被解釋過了,唯一剩下的就是set timeout 10是什么意思呢?

我們可以看到,上面expect都是用來等待某個結果出來的,如果這個結果一直不出來怎么辦?難道程序一直等下去么?當然不是,所以這里就有了timeout,也就是程序如果在等待10s種后沒有得到期望結果,將會自動退出。如果不設置timeout的話,expect默認的時間是20s。

而至于spawn,send,expect,這些都是內置的expect命令,其中spawn專門用來建立網絡連接的時候用的,記住就可以了。

在這里,需要提示的是在使用expect命令等待內容的時候,后面的內容一定要是屏幕輸出的最后內容。比如上述程序中等到了“login”,“%”等,都是屏幕輸出的最后,至于為什么,將在以后描述。

?

轉載于:https://www.cnblogs.com/wangkangluo1/archive/2012/06/13/2548655.html

總結

以上是生活随笔為你收集整理的Expect 在网络管理中发挥着重要作用的全部內容,希望文章能夠幫你解決所遇到的問題。

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