2

私の最終的な目標は、ルーターにtelnetで接続し、ルーターと対話することです。次のexpectスクリプトは、まったく役に立ちません。ルータにはユーザーIDまたはパスワードがありません。自動ログインです。

ファイルコードが必要です。

set iptotelnet "10.x.x.x"
spawn telnet $iptotelnet

sleep 10
expect ">" #this is because initially the prompt will be >
sleep 10
send "enable\r" # this should change the prompt from > to # 

sleep 10
expect "#"
sleep 10
interact
sleep 10
exit

ただし、次のエラーが発生します。

送信:spawnidexp4が開いていません
    実行中
「enable\r」を送信します。

これはtelnetだけでなく、他のコマンドでも同じエラーが発生します。

私を助けてください。

4

3 に答える 3

2

スクリプトに大きな問題はありませんが、そのspawnように失敗することはありません。(あなたが持っているコメントは問題を引き起こすでしょうが、;#代わりに使用することで簡単に修正でき#ます。)したがって、あなたの問題は他の場所にあります(まあ、非常に高い確率で)。

WindowsでExpectを使用してTelnetを制御しようとしているようです。残念ながら、telnetは、この方法では制御できない特殊なケースです。WindowsではExpectは、システムデバッグ機能を使用して端末出力をインターセプトしますが、これは、特別なシステム権限が設定されている実行可能ファイルでは機能しません。telnetはその1つです。これが当てはまるプログラム—したがって、別のアプローチが必要です。最も簡単なのは、取得してplink.exe(実際には、端末/自動化用のPuTTYです)、telnetの代わりにそれを(「telnet」モードで)使用することです。

于 2012-09-14T12:26:44.767 に答える
0

# commentsおそらく、sendコマンドラインでは使用できません。
同じことを試してください。ただし、送信文字列にコメントはありません。

于 2012-09-14T09:48:26.943 に答える
0

それは私にも起こります。そして、それは解決されました。

Windows上のCygwinでサーバーを自動的にtelnetしようとしています。

ただし、WindowsにインストールされているMicrosoft telnetは、Cygwinシェルでは機能しません。

以下の応答が得られた場合、これが問題の原因です。$ which telnet / cygdrive / c / WINDOWS / system32 / telnet

2つの解決策があります。1。Cygwinx86の場合、telnetコマンドを含むパッケージ「inetutil」をインストールするだけです。2. Cygwin x86_64の場合、現在(2013-09-09)「inetutil」は64ビットに移植されていないため、代わりにPuTTyの一部であるplink.exeを使用します。

于 2013-09-09T11:22:02.227 に答える