亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本中免交互工具ecpect是怎樣用的

發布時間:2021-09-26 17:21:33 來源:億速云 閱讀:242 作者:柒染 欄目:系統運維

這篇文章給大家介紹shell腳本中免交互工具ecpect是怎樣用的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Expect概述

  • Expect是建立在tcl基礎上的一個工具,Expect是用來進行自動化控制和測試的工具。主要解決shell腳本中不可交互的問題。對于大規模的Linux運維很有幫助。

  • 在Linux運維和開發中,我們經常需要遠程登錄服務器進行操作,登錄的過程是一個交互的過程,可能需要輸入yes/no、password等信息。為了模擬這種輸入,可以使用Expect腳本。
    Expect安裝

    yum install expect -y   安裝expect服務

    Expect基本命令
    1.send:向進程發送字符串,用于模擬用戶的輸入

  • 該命令不能自動回車換行,一般要加\r (回車)
    2.expect

  • expect的一個內部命令,判斷上次輸出的結果里是否包含指定的字符串,如果有則立即返回,否則就等待超時時間后返回。

  • 只能捕捉spawn啟動的進程的輸出。
    3.spawn:啟動進程,并跟蹤后續交互信息。
    4.interact:執行完成后保持交互狀態,把控制權交給控制臺
    5.Timeout:指定超時時間,過去則繼續執行后續指令

  • 單位是:秒

  • timeout -1 為永不超時

  • 默認情況下,timeout是10秒
    6.exp_continue

  • 允許expect繼續向下執行
    7.send_user

  • 回顯命令,相當于echo
    8.$argv 參數數組

  • expect腳本可以接受從bash傳遞的參數,可以使用【lindex,$argv n】獲得,n從0開始,分別表示第一個、第二個。。。
    9.Expect腳本必須以interact或expect eof結束,執行自動化任務通常expect eof就夠了

  • expect eof 是在等待結束標志,由spawn啟動的命令在結束時會產生一個eof標記,expect eof就是在等待這個標記。
    Expect語法
    單一語法分支

    expect “password” {send “mypassword”;}

    多分支語法結構

    expect {
    "aaa"{send "AAA\r"}
    "bbb"{send "BBB\r"}
    "ccc"{send "CCC\r"}
    }

    示例:
    1.利用expect 完成ssh登錄過程
    (1)直接執行

    #!/usr/bin/expect
    set timeout 60
    #環境設置
    log_flie test.log
    log_user 1
    #變量定義
    set hostname [lindex $argv 0]
    set password [lindex $argv 1]
    #啟動spawn
    spawn ssh root@$hostname
    #匹配條件
    expect {
    "(yes/no)"
    {send "yes\r";exp_continue}
    "password"
    {send "$password\r"}
    }
    #權限轉交控制臺
    interact

    (2)嵌入執行

    #!/bin/bash
    hostname=$1
    password=$2
    /usr/bin/expect<<-EOF
    spwan ssh root@${hostname}
    expect{
        "(yes/no)"
        {send "yes\r";exp_continue}
        "*password"
        {send "password\r"}
    }
    expect "*]#"
    send "exit\r"
    expect eof
    EOF

    2.創建用戶tom,密碼tom123

    #!/bin/bash
    user=$1
    password=$2
    useradd=$user
    expect<<-EOF
    spawn passwd $user
    expect {
            "New password:"
            send "${password}\r"
            "Retype new password:"
            send "${password}\r"
    }
    ecpect eof
    EOF

關于shell腳本中免交互工具ecpect是怎樣用的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岳阳县| 静乐县| 海宁市| 京山县| 海丰县| 体育| 外汇| 喜德县| 襄垣县| 永顺县| 大连市| 潮安县| 大化| 巢湖市| 永川市| 咸阳市| 顺义区| 泗阳县| 南澳县| 南充市| 横山县| 大渡口区| 丹棱县| 个旧市| 双峰县| 荣昌县| 仁怀市| 宾川县| 伊吾县| 澄迈县| 天峻县| 富顺县| 樟树市| 岳阳市| 靖州| 大渡口区| 南丹县| 富裕县| 婺源县| 墨玉县| 松原市|