導航:首頁 > 程序命令 > expect命令

expect命令

發布時間:2022-05-27 08:26:29

① 在shell(#!/bin/sh)腳本中怎麼使用expect命令,需要添加什麼環境變數嗎,正確即給分

1、首先檢查你機器上有沒有expect(我知道ubuntu默認是沒有安裝的)
ls /usr/bin | grep expect 看看有沒有裝expect
2、沒有的話需要安裝
在ubuntu的軟體安裝中心,搜索tcl 和tk 和expect並安裝;
也可以命令行輸入sudo apt-get install tcl tk expect
3. 環境ready了後,可以在shell腳本中用Here document的方式使用expect命令
例子參見:http://..com/question/397085991.html
Here document格式如下:
expect <<!
這中間都是expect命令
!
為防止錯誤,建議都頂格寫,前面不要留空格。

linux的expect代碼,發現如果不加interact,則send命令好像沒有執行,如果加上interact命令才執行。

常見的做法是將interact換成 expect eof ,從而可以捕獲到spawn命令啟動的進程的結束狀態。
如果堅持使用interact可以在命令執行完成後依然保持在登陸在遠程伺服器上,可以直接手工敲命令進行交互,完成後續工作,最後需要exit退出ssh遠程登陸。
至於去掉interact卻沒有使用expect eof的情況下send沒有執行的問題,主要是因為因為spawn會啟動一個進程,但是沒有捕獲匹配eof或者time out事件造成的

③ 使用 expect 的時候,怎麼使用shell的命令啊

expect 用的是 tcl 語言,你可以用
exec sleep 1
if { [file isfile certs/cert.key] } {
send_user "file existing"
} else {
send_user "file not existing"
}

更多細節可以去學一下 tcl 語言。

④ expect學習之如何獲取命令行參數和函數參數

比如下面腳本用來做ssh無密碼登陸,自動輸入確認yes和密碼信息,用戶名,密碼,hostname通過參數來傳遞

ssh.exp

Python代碼
#!/usr/bin/expect
set timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
spawn ssh--id -i .ssh/id_rsa.pub $username@$hostname
expect "yes/no"
send "yes\r"
expect "password:"
send "$password\r"

expect eof

執行腳本./ssh.exp root pasword hostname1

expect接收參數的方式和bash腳本的方式不太一樣,bash是通過$0 ... $n 這種方式,而expect是通過set <變數名稱> [lindex $argv <param index>],例如set username [lindex $argv 0]

⑤ windows expect怎麼使用

你是說shell的expect么,我有個ssh自動登錄的腳本,你看下1. [#!/usr/bin/expect]

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什麼意思

expect意思是期望;指望;認為;預料;期待;預期。

expect的基本意思是「期待」「料想」,指相信或盼望有人會來或有事會發生,這種預料多有一定的根據,強調的是客觀可能性,多用於好的方面,在口語中expect的意思常淡化為「認為」「想」,此時主語多為第一人稱單數。

expect多用作及物動詞,可接名詞、代詞、動詞不定式或that從句作賓語,也可接以動詞不定式充當補足語的復合賓語。

expect所接的that從句在表示「預料」「期望」時可用虛擬式,在作「想」「認為」解時可用陳述式,that有時可以省略。

(6)expect命令擴展閱讀:

desire,wish,hope,expect,want,long這些動詞都有「希望」之意。

1、desire語氣較正式莊重,著重渴望的力量與熱切,常含有強烈的意圖和目的。

2、wish語氣較弱,多指難於實現或不可能實現的願望。

3、hope指對願望實現有一定信心的希望。

4、expect通常指有很大程度的把握,但仍含有預料之意,或預計某事或某行動的發生。

5、want一般指所想要的東西是切望得到的東西,能彌補實際需要。

6、long語氣強,指極殷切地盼望著,這種盼望側重於很難或不可能得到的東西。有時也指一般願望,但含一定感情色彩。

⑦ linux expect講解怎麼使用

[root@zuozhang PYTHON_TEST]# rpm -ql expect package expect is not installed 查看是否有安裝,如果沒有安裝安裝一個即可。 yum install expect*

⑧ expect如何將命令結果賦值給變數

改成 send 「exit \$ret\r」 ret 變數是 ssh 到遠端後shell裡面定義的 (即你之前的send "ret=`echo $?`\r") ,所以要把 $ 用 \ 轉意,否則 $ret 指的是 expect 里的ret變數,你在 expect 里當然沒有定義過這個變數了,所以出錯。

⑨ 如何判斷expect中調用的命令是否成功

set time 300應該是set timeout 300吧。你可以在set timeout命令前面或者後面加一條命令:log_file /tmp/expect.log復制代碼然後從log裡面看命令是否執行成功了。回復 1# baochenggood

⑩ linux遠程重啟windows

安裝步驟:

1、進入鏈接下載最新 OpenSSH-Win64.zip(64位系統),解壓至C:Program FilesOpenSSH

2、打開cmd,cd進入C:Program FilesOpenSSH(安裝目錄),執行命令:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

3、設置服務自動啟動並啟動服務:

sc config sshd start= auto

net start sshd

到此服務已經安裝完畢,默認埠一樣是22,默認用戶名密碼為Window賬戶名和密碼,當然防火牆還是要設置對應埠允許通訊

修改設置:

通常linux下會修改ssh_config文件來修改ssh配置,但在安裝目錄並沒有發現這個文件,查閱官方wiki後發現,原來是在C:ProgramDatassh目錄下(此目錄為隱藏目錄)

埠號:Port 22

密鑰訪問:PubkeyAuthentication yes

密碼訪問:PasswordAuthentication no

空密碼:PermitEmptyPasswords no

然後進入C:Users賬戶名.ssh目錄,創建authorized_keys公鑰文件(也可在ssh_config修改路徑)(僅限7.7之前版本,7.9版本請看最後更新)

設置完成後重啟sshd服務,接下來就可以使用Xshell等工具使用密鑰連接了~

踩過的坑:

命令行不識別空格時:C:Program Files用C:Progra~1替代

Windows Service2012R2即使配置了.ssh/authorized_keys公鑰,連接時依然顯示沒有注冊公鑰。。。

查閱了官方wiki判斷可能是許可權問題:Fix SSH file permissions

進入C:Program FilesOpenSSH(安裝目錄),右鍵 FixHostFilePermissions.ps1【使用PowerShell運行】,命令行提示全選是,重啟sshd服務後密鑰連接正常

2019.5.17更新:

新部署伺服器的時候,發現公鑰無法注冊,發現新版本有變動:

執行的命令為:

  • ./deploy/startwin 10.24.196.213 administrator Test1127?!

  • 閱讀全文

    與expect命令相關的資料

    熱點內容
    加密的門卡怎麼錄上nfc 瀏覽:832
    單片機與電腦串口連接 瀏覽:965
    dhcp伺服器怎麼設置地址租期 瀏覽:588
    資源腳本文本經過編譯後文件後綴 瀏覽:153
    什麼app可以加unifi 瀏覽:150
    air14解壓縮 瀏覽:485
    騰訊雲香港伺服器總是斷線 瀏覽:648
    解壓解壓筆是什麼 瀏覽:11
    微信有文件夾沒有聲音 瀏覽:976
    華為連接手錶app叫什麼名 瀏覽:815
    未轉變者加伺服器為什麼會白屏 瀏覽:266
    夢幻限時伺服器是什麼點卡 瀏覽:47
    怎麼把安卓系統做成刷機包 瀏覽:714
    抽拉式水滴夾文件夾 瀏覽:239
    如何刪除金蝶91伺服器 瀏覽:177
    群暉存儲屬於什麼伺服器 瀏覽:986
    如何搭建附件伺服器 瀏覽:793
    騰訊雲大學生伺服器 瀏覽:704
    安卓手機瀏覽器如何改成電腦版 瀏覽:727
    生成網表再編譯結果 瀏覽:139