2011-11-16 44 views
1

我需要登錄到一臺開發服務器才能將事情放到實時服務器上。 所以處理器是這​​樣的期望自動登錄到第二級遠程機器

  • 登錄到開發服務器。
  • 消防部署腳本
  • 部署腳本要求3個密碼。
  • 後面跟着ssh密碼短語。

我在開發和在線服務器上沒有任何其他訪問權限。所以我無法使用基於密鑰的身份驗證。以及我無法在服務器上安裝任何東西。

是否有可能使用期望或任何其他工具通過使用我可以自動化呢?

我試圖使用像

spawn ssh deploy 
expect_after eof { exit 0 } 
expect "# " 
send "deploy_to_server <branch_name>\r" 
expect eof 
expect "*password*" { send "passworrd" } 

編輯

spawn ssh deploy 
    send "deploy_to_server <branch_name>\r" 
    expect eof 
    expect "*password*" { send "passworrd\n" } 
+0

你需要發送'\ r'而不是'\ n'。 '\ r'對應於回車鍵。 –

+0

當開發期望腳本時,總是在頂部放置'exp_internal 1'。你將能夠看到爲什麼你的模式無法匹配。 –

+0

@glenn jackman 根據調試信息行期望「* password *」{send「passworrd \ n」}不等待密碼併發送輸出 –

回答

1

你錯過了在你發送一個行終止:

expect "*password*" { send "passworrd\n" } 

除此之外,它似乎很荒謬的期待EOF先,沒有重生,等待密碼提示。

+0

編輯我的代碼仍然不工作 –

+0

它正在等待在[sudo]密碼爲部署用戶: –

+0

得到了期望發生問題超時 –

0

取決於你如何登錄到開發服務器以及如何部署腳本的工作。如果一切都是基於文本的,那麼使用expect腳本來做它並不是問題。

+0

一切都是文字based.my腳本掛在sudo密碼promt –

+0

請參閱我的編輯看我的代碼 –