「予測」がサーバー応答文字列と一致しません。

「予測」がサーバー応答文字列と一致しません。

私はbashスクリプトを使用してTelnetサーバーにログインし、多くのコマンドを実行しています。次のようになります。

ログインして.shを実行してください。

#!/bin/bash

unset TELNET_USER_NAME_STRING
unset TELNET_PASSWORD_STRING
unset TELNET_USER_NAME
unset TELNET_PASSWORD

TELNET_USER_NAME_STRING=`cat SAP_output`
TELNET_PASSWORD_STRING="Password:"

TELNET_USER_NAME="UserNam3\r"
TELNET_PASSWORD="Passw0rd\r"

# Expect script starts here
expect <<- DONE
        spawn telnet localhost 50008
        expect '$TELNET_USER_NAME_STRING'
        send "$TELNET_USER_NAME"
        sleep 3
        expect "$TELNET_PASSWORD_STRING"
        send "$TELNET_PASSWORD"
        sleep 3
        spawn ls
        expect eof
DONE

どこ

SAP_出力:

Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

   ***********************************************
   **********************************************
   ****###*******####*****#######**************
   **##***##****##**##****##****##************
   ***##*******##****##***##****##**********
   *****##*****########***######***********
   ******##****##****##***##*************
   **##***##**##******##**##************
   ****###****##******##**##**********
   **********************************
   ********************************

   Telnet Administration
   SAP Java EE Application Server v7.50


User name:

Telnetログイン後にバナーを受け取りましたが、そのまま残ります(文字列が一致しないかのように)。正確な応答の代わりにワイルドカードを使用する方が安全ですか(そして「ユーザー名:」のみが一致)。

ベストアンサー1

それを見つけました:

TELNET_USER_NAME_STRING='*name:*'

TELNET_PASSWORD_STRING='*assword:*'

TELNET_USER_NAME='UserNam3\r'
TELNET_PASSWORD='Passw0rd\r'

# Expect script starts here
expect <<- DONE
        spawn telnet localhost 50008
        expect '$TELNET_USER_NAME_STRING'
        send "$TELNET_USER_NAME"
        expect '$TELNET_PASSWORD_STRING'
        send "$TELNET_PASSWORD"
        # Check if we're logged in
        expect eof
DONE

バナー全体の代わりにワイルドカードを使用し、行文字「\ r」を返してキャリッジリターンを「押します」。

編集する:

これよりエレガントな答えです。

おすすめ記事