導航:首頁 > 程序命令 > 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命令相關的資料

    熱點內容
    人人影視路由器固件編譯 瀏覽:965
    照片通訊錄簡訊怎麼從安卓到蘋果 瀏覽:456
    邏輯開發編譯環境 瀏覽:670
    ce自己編譯 瀏覽:896
    javaexe進程 瀏覽:478
    電腦wechat是什麼文件夾 瀏覽:956
    單片機moc3041 瀏覽:786
    at命令串口助手 瀏覽:749
    吸血app怎麼關閉 瀏覽:35
    雲伺服器地圖不見了怎麼辦 瀏覽:240
    mc伺服器應該叫什麼名字 瀏覽:607
    推拉門增加密封性 瀏覽:731
    伺服器搬家需要什麼 瀏覽:541
    普通電腦如何添加伺服器 瀏覽:401
    在外包公司如何成為優秀的程序員 瀏覽:413
    無伺服器如何開發 瀏覽:802
    怎麼改中國移動伺服器 瀏覽:779
    一年程序員發展規劃 瀏覽:986
    個人發卡網彈窗源碼 瀏覽:472
    返詐騙app推廣碼如何弄 瀏覽:858