成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

萊州網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,萊州網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為萊州超過千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的萊州做網(wǎng)站的公司定做!

Expect概述

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

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

    yum install expect -y   安裝expect服務(wù)

    Expect基本命令
    1.send:向進(jìn)程發(fā)送字符串,用于模擬用戶的輸入

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

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

  • 只能捕捉spawn啟動的進(jìn)程的輸出。
    3.spawn:啟動進(jìn)程,并跟蹤后續(xù)交互信息。
    4.interact:執(zhí)行完成后保持交互狀態(tài),把控制權(quán)交給控制臺
    5.Timeout:指定超時時間,過去則繼續(xù)執(zhí)行后續(xù)指令

  • 單位是:秒

  • timeout -1 為永不超時

  • 默認(rèn)情況下,timeout是10秒
    6.exp_continue

  • 允許expect繼續(xù)向下執(zhí)行
    7.send_user

  • 回顯命令,相當(dāng)于echo
    8.$argv 參數(shù)數(shù)組

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

  • expect eof 是在等待結(jié)束標(biāo)志,由spawn啟動的命令在結(jié)束時會產(chǎn)生一個eof標(biāo)記,expect eof就是在等待這個標(biāo)記。
    Expect語法
    單一語法分支

    expect “password” {send “mypassword”;}

    多分支語法結(jié)構(gòu)

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

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

    #!/usr/bin/expect
    set timeout 60
    #環(huán)境設(shè)置
    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"}
    }
    #權(quán)限轉(zhuǎn)交控制臺
    interact

    (2)嵌入執(zhí)行

    #!/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.創(chuàng)建用戶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

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

當(dāng)前文章:shell腳本中免交互工具ecpect是怎樣用的
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article16/pgeigg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、小程序開發(fā)、網(wǎng)站營銷域名注冊、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
石河子市| 雅安市| 托克托县| 敦化市| 定远县| 都江堰市| 肥乡县| 赤城县| 垣曲县| 呼图壁县| 宜良县| 衡阳县| 皮山县| 赤水市| 公主岭市| 商南县| 周宁县| 曲沃县| 镇巴县| 保靖县| 凤冈县| 叶城县| 博野县| 六安市| 邛崃市| 台湾省| 无为县| 五华县| 鄢陵县| 耒阳市| 肥东县| 明水县| 滦平县| 靖边县| 玉林市| 大渡口区| 长顺县| 治多县| 井研县| 祁门县| 靖远县|