[英]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.