簡體   English   中英

SSH/期望 “期望”在期望 shell 腳本中如何工作?

[英]SSH/Expect How does "expect" work in expect shell script?

我嘗試使用期望登錄 ssh。 它有效,但有些輸出不是預期的,我不知道為什么。 這是我的 shell 腳本:

#!/bin/sh
expect -c ' spawn ssh USER@ADDRESS ; 
            expect "?assword:" ; 
            send "MyPassword\r" ;
            expect "?" ;
            send "logout\r" ; 
            interact'

這是我的 MacOS 終端中的 output:

ip87-114:Downloads tasiyuchien$ ./test.sh 
spawn ssh USER@ADDRESS
Password:
logout
Last login: Tue Sep 13 18:17:21 2022 from 140.112.87.114
xdn42o221:~ USER$ logout
Connection to 140.112.42.221 closed.
ip87-114:Downloads tasiyuchien$ 

第一個問題是為什么“密碼:”后面有“注銷”output? 問號不是代表任何單個字符嗎? 是否有任何隱含的 output 或我看不到的模式,因為在“密碼:”之后我什么也看不到。 (同樣奇怪的是,當我將“?”替換為“*”時,“密碼:”之后什么都不會是 output。嗯......)當我登錄時可以問同樣的問題,因為除了“注銷”我什么也看不到是 output。

第二個問題是為什么有兩個“logout”輸出,我認為只有添加“except continue”才能重復使用except參數。

任何人都可以向我解釋發生了什么。 謝謝!

作為登錄過程的一部分,在顯示密碼:提示后,您輸入密碼並按 Enter,然后登錄過程會打印一個換行符。 此換行符是“?”匹配的字符。

改變“?” 到“*”效果更好:星號可能更貪婪。 它不是只匹配一個字符,而是匹配一個或多個字符,因此它會嘗試收集盡可能多的字符。

為什么會出現兩個“注銷”? 我不知道。 也許您的 shell 在顯示您的提示后重新打印用戶輸入..

暫無
暫無

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

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