簡體   English   中英

spawn:如何傳遞參數以在Expect腳本中生成?

[英]spawn: How to pass arguments to spawn within an expect script?

我只是遇到了一個更大的bash腳本 ,偶然發現一個問題,可以使用ssh連接到另一台計算機。 第一次訪問(總是,實際上是;)),因此詢問主機'[192.168.120.170]:9022([192.168.120.170]:9022)的真實性無法建立。 您確定要繼續連接(是/否)嗎?

因此,我嘗試使用其他的期望/生成腳本來回答這個問題。

所以我有兩個文件: deploy.sh

#!/bin/bash
... Some functions and more
# call expect script to get a first time onto the target
/usr/bin/expect -d -f ./deployImage_helper.exp -- -p 9022 root@192.168.120.170

deploy_helper.exp

#!/usr/bin/env expect  -f
set args [lrange $argv 1 end]
spawn ssh {*}$args
expect "The authenticity of host'[192.168.120.170]([192.168.120.170]:9022)' can't be established."
send "yes"

如果我運行deploy.sh,則會收到錯誤消息: 無效的命令名稱“ 192.168.120.170”

不知何故,我沒有讓ssh運行。

任何幫助,將不勝感激。

編輯:

更改了deploy.sh第4行

set args [lrange $argv 1 end]
spawn ssh {*}$args
expect -re {The authenticity of .* can't be established.} {
    send "yes"
}

interact

""變量和方括號[] (將方括號內的命令評估並放置結果),將進行擴展和評估。 您需要使用方括號\\[或使用{}代替"" 順便說一句,您可以通過openssh選項禁止問這個問題(僅顯示警告):

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 9022 root@192.168.120.170

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM