我目前運行具有以下命令的服務器測試:發送關閉信號SSH立即密碼提示
echo ^C |ssh -q [email protected]${server}
if [ 0 -ne $? ]; then
echo "==> Failed to connect..."; continue
fi
遺憾的是它並不像我^C
是這是一個密碼提示後立即關閉連接我期待什麼。有沒有更好的方式來寫這個測試ssh連接而不掛在提示符上?
" failed="" to="" connect...";="" continue="" fi="" 遺憾的是它並不像我^c是這是一個密碼提示後立即關閉連接我期待什麼。有沒有更好的方式來寫這個測試ssh連接而不掛在提示符上?"="">
我目前運行具有以下命令的服務器測試:發送關閉信號SSH立即密碼提示
echo ^C |ssh -q [email protected]${server}
if [ 0 -ne $? ]; then
echo "==> Failed to connect..."; continue
fi
遺憾的是它並不像我^C
是這是一個密碼提示後立即關閉連接我期待什麼。有沒有更好的方式來寫這個測試ssh連接而不掛在提示符上?
在unix系統上,^C
殺死一個進程,因爲當用戶鍵入^ C時,TTY接口向進程發送中斷信號。標準輸入上的文字^ C(從文件讀取或從另一個進程的輸出打印到管道中)只是一個常規字符。
您可以通過類似這樣運行的ssh抑制密碼認證:
ssh -o PasswordAuthentication=no -q [email protected]${server}
ssh將有故障代碼退出如果不能使用密碼以外的東西來驗證。此失敗代碼與連接失敗無法區分,因此這可能不是您想要的。
如果您主要對連接到遠程SSH服務器端口感興趣,則不必使用實際的ssh程序進行測試。例如,你可以做這個測試與nc
(netcat):
$ nc -z localhost 22
$ echo $?
0
$ nc -z localhost 11122
$ echo $?
1
的-z
標誌告訴netcat來測試連接到指定的主機和端口不發送或接收任何數據。你可以像這樣構造你的測試:
if nc -z localhost 22
then
: success
else
echo Connection to ${server} failed
fi
'0!= = $(echo $?)'???如果不會產生錯誤信息,我會感到驚訝。無論如何,你可以將它減少到'if [$? -ne 0];然後'。並且很遺憾地說,我認爲你原來的論文不會工作。它很複雜,所以如果你不能很快地推進你的代碼,那麼開始閱讀'expect'來支持你的測試。祝你好運。 – shellter
@Academia echo $'cc'| ssh root @ hostname似乎沒有工作=/ – ehime
@shellter是的,我認識的錯誤編碼;)改變,以反映你所說的 – ehime