1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        利用expect腳本自動管理linux主機

        發布時間:  2012/9/3 16:52:19
        自動登錄管理linux主機
        1. #!/usr/bin/expect -f   
        2.    
        3. set port port_no   
        4. set user user_name   
        5. set host host_name   
        6. set password my_password   
        7. set timeout -1   
        8.    
        9. spawn ssh -p$port $user@$host   
        10. expect "*assword:*"   
        11. send "$password\r"  
        12. expect "*]#" send "ifconfig \r" expect "*]#" send "exit\r"
        13. expect eof 

        自動上傳文件 

        1. #!/usr/bin/expect -f 
        2. #輸入分析儀ip以及需要上傳的文件名和TSMIS_ROOT環境變量 
        3. set ip [lindex $argv 0] 
        4. set localfile [lindex $argv 1] 
        5. set  TSMIS_ROOT  [lindex $argv 2]   
        6. #scp拷貝需要傳輸的文件到指定目錄,并且跳過手動輸入部分 
        7. spawn scp -r $localfile root@$ip:$TSMIS_ROOT/tmp/$localfile 
        8. set timeout 300 
        9. expect { 
        10.  "yes/no"  {send "yes\r" ; exp_continue}  
        11.  "*assword:" {send "111111\n"} 
        12.  } 
        13. set timeout 300 
        14. send "exit\r" 
        15. expect eof 

         

        expect的具體用法

         

        1. #!/usr/bin/expect 
        2. set timeout 30 
        3.  
        4. spawn ssh -l username 192.168.1.1 
        5.  
        6. expect "password:" 
        7.  
        8. send "ispass/r" 
        9.  
        10. interact 

         

        1  [#!/usr/bin/expect]

        這一行告訴操作系統腳本里的代碼使用那一個shell來執行。這里的expect其實和linux下的bash、windows下的cmd是一類東西。

        注意:這一行需要在腳本的第一行。

         

        2. [set timeout 30]

        基本上認識英文的都知道這是設置超時時間的,現在你只要記住他的計時單位是:秒


        3. [spawn ssh -l username 192.168.1.1]

        spawn是進入expect環境后才可以執行的expect內部命令,如果沒有裝expect或者直接在默認的SHELL下執行是找不到spawn命令的。所以不要用 “which spawn“之類的命令去找spawn命令。好比windows里的dir就是一個內部命令,這個命令由shell自帶,你無法找到一個dir.com 或 dir.exe 的可執行文件。


        它主要的功能是給ssh運行進程加個殼,用來傳遞交互指令。

         

        4. [expect "password:"]


        這里的expect也是expect的一個內部命令,有點暈吧,expect的shell命令和內部命令是一樣的,但不是一個功能,習慣就好了。這個命令的意思是判斷上次輸出結果里是否包含“password:”的字符串,如果有則立即返回,否則就等待一段時間后返回,這里等待時長就是前面設置的30秒

         

        5. [send "ispass/r"]


        這里就是執行交互動作,與手工輸入密碼的動作等效。

        溫馨提示: 命令字符串結尾別忘記加上 “/r”,如果出現異常等待的狀態可以核查一下。

         

        6. [interact]


        執行完成后保持交互狀態,把控制權交給控制臺,這個時候就可以手工操作了。如果沒有這一句登錄完成后會退出,而不是留在遠程終端上。如果你只是登錄過去執行一段命令就退出,可改為[expect eof]

         批量處理linux主機~

        這個是expect腳本~

        這個是要讓遠程執行的命令集

        下面是批量執行~

         

         

         

         

         

        上面腳本中的自動交互用到了expect,那么什么是expect呢?

        expect是一個基于Tcl的用于自動交互操作的工具語言,它適合用來編寫需要交互的自動化腳本,比如上面提到的SSH輸入用戶名密碼,自動FTP等等場景。

         

        除了具有Tcl的語法,expect提供了幾個常用的命令:

        1. send

        用來發送一個字符串,比如 send "hello world"。

        初始情況下,這個字符串會發送到標準輸出。如果你用的是max OSX或者linux,可以在Terminal下直接輸入expect命令并回車,就進入了expect交互環境,此時,輸入send "hello world"就可以看到結果。

        一旦你的程序已經與其他程序進行交互,字符串就會被發送到其他程序那里。如上面的例子腳本中,我們調用send ”$password\r"就是把密碼發送給SSH連接的服務器端指定端口。

         

        2. expect

        與send相反,expect用來等待你所期望的字符串。比如expect "hello"

        在expect后面跟的字符串中,你可以指定一個正則表達式。

        expect會一直等待下去,除非收到的字符串與預期的格式匹配,或者到了超期時間。

         

        3. spawn

        spawn用來啟動一個新的進程,比如上面的spawn ssh -D $port $user@$host,Expect會執行命令“ssh -D $port $user@$host”。

        在交互式的場景中,當你輸入命令后,可能服務器端會返回一些操作提示符,以讓你輸入命令。Expect提供了這樣三個常用的命令,spawn, expect和send,恰好滿足這種需要。把它們結合起來使用,可以實現很多簡單的自動化腳本。

         

        其它常用的命令還有:interact,比如你通過腳本自動連接到了某個ftp,并輸入了用戶名密碼,此時需要人工輸入一些命令,就可以使用interact命令,它會把腳本的控制權交給用戶;sleep,等待多少秒等等。

         

        由于expect是從Tcl繼承下來的,所以也支持Tcl的語法和命令,比如變量聲明、流程控制等等。

         

        上面腳本的一些解釋:

        1. set timeout 300:設置超時時間300s。如果設為-1,代表永不超時。

        2. expect eof:等待接受文件結束符。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线