這是摘自已知與Telnet服務器一起工作的TCL腳本的相關部分。Tcl期望:變量發送對複雜認證提示的響應
#!/bin/sh
# \
exec tclsh "$0" ${1+"[email protected]"}
package require Expect
#USER
set user xyz
set secret 12345678
set smr AB1CDE-11
set host foo.bar
#TELNET START
spawn telnet $host
expect "\[Login :\]"
send "$user\r";
expect "=>"
#RMS
send "c $smr gate\r";
expect "$smr >"
send "PW $secret\r"
expect "\[>\]"
幾天前登錄過程發生了變化。無法與send "PW $secret\r"
聯繫。在$smr >
響應之後,可發送任何命令以發起登錄,例如, send "login\r"
。 telnet迴應Login [517]:
。 []內的數字對應於$secret
中的位置。完整的$secrect
響應不再成功。服務器需要一個包含全部三個字符和三個附加字符的響應。
出於某些原因,我希望$secret
中字符的位置處於三個隨機字符(RegEx字詞中的可能字符:[[email protected]#$%^&*()_]
)之間的隨機位置。 $secret
的長度是可變的。所以我無法爲每個角色設置一個變量來響應他們的RegEx匹配結果。
正確的RegExp捕獲字符的位置將是LOGIN \[(\d)(\d)(\d)]:
,對不對?我已經得到了以下內容(由於我正在評估登錄過程的隨機性,所以輸出在統計後處理的文本文件中被捕獲)。
send "login\r"
set input [open output_$user.txt a]
set output $expect_out(buffer)
puts $input $output
close $input
expect "LOGIN"
#Check LOGIN prompt
set file [read [open "output_$user.txt" r]]
if [
regexp -nocase {LOGIN \[(\d)(\d)(\d)]:}
] then {
send "RESPONSE\r";
}
我該如何解決TCL的問題?謝謝!
Ammendment:
連接到Telnet服務器與send "c $smr gate\r";
XYZ SMC via AB1CDE-11 >
被回答後,目前正由expect "$smr >"
預期。在此之前,一切正常。
以下send "login\r"
,Telnet服務器與兩行回覆:
Login [517]:
XYZ SMC via AB1CDE-11 >
匹配正則表達式將是Login \[(\d)(\d)(\d)\]:\n.*>
。 我已經嘗試了不同的期待正則表達式語法:
多納爾共枕expect -re {Login \[(\d)(\d)(\d)\]:}
崩潰TCL的
expect -re -n {Login \[(\d)(\d)(\d)\]:\n.*>}
TCL的崩潰
expect {-re -n "Login \[(\d)(\d)(\d)\]:"}
出口
只有一些不正規表達式(-re
)像expect "$smr >"
或expect "LOGIN"
作品,以及TCL一點兒也不出口。
TCL程序兼容性(文件夾的路徑已經被匿名):
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="tclsh.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="base-tcl8.6-thread-win32-ix86.dll" SIZE="2023820" CHECKSUM="0xFCEB4A60" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tcl DLL" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tcl86.dll" LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1693A0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:56:02" UPTO_LINK_DATE="03/12/2015 23:56:02" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="base-tcl8.6-thread-win32-ix86.exe" SIZE="2445716" CHECKSUM="0x2B1899DD" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tclsh Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tclsh86s.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:41:45" UPTO_LINK_DATE="03/12/2015 23:41:45" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="base-tk8.6-thread-win32-ix86.exe" SIZE="3713462" CHECKSUM="0xB94B598D" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="ActiveState Basekit" COMPANY_NAME="ActiveState Software Inc." PRODUCT_NAME="TDK Basekit 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="basekit.exe" LEGAL_COPYRIGHT="Copyright © 2009 by ActiveState Software Inc." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:46:01" UPTO_LINK_DATE="03/12/2015 23:46:01" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="tcl86.dll" SIZE="1228800" CHECKSUM="0x3BC33EBF" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tcl DLL" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tcl86.dll" LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x12F33A" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 22:59:49" UPTO_LINK_DATE="03/12/2015 22:59:49" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="tclsh.exe" SIZE="393216" CHECKSUM="0x9050007E" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tclsh Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tclsh86.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 22:59:57" UPTO_LINK_DATE="03/12/2015 22:59:57" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="tclsh86.exe" SIZE="393216" CHECKSUM="0x9050007E" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tclsh Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tclsh86.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 22:59:57" UPTO_LINK_DATE="03/12/2015 22:59:57" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="teacup.exe" SIZE="3259545" CHECKSUM="0xFDE41297" BIN_FILE_VERSION="8.5.2.18" BIN_PRODUCT_VERSION="8.5.2.18" PRODUCT_VERSION="8.5.18" FILE_DESCRIPTION="Tclsh Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.5 for Windows" FILE_VERSION="8.5.18" ORIGINAL_FILENAME="tclsh85s.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.5.2.18" UPTO_BIN_PRODUCT_VERSION="8.5.2.18" LINK_DATE="03/12/2015 04:34:28" UPTO_LINK_DATE="03/12/2015 04:34:28" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="tk86.dll" SIZE="1433600" CHECKSUM="0x9963D526" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tk DLL" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tk 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tk86.dll" LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x162A03" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:31:57" UPTO_LINK_DATE="03/12/2015 23:31:57" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="wish.exe" SIZE="393216" CHECKSUM="0x4A8216DD" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Wish Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tk 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="wish86.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:31:58" UPTO_LINK_DATE="03/12/2015 23:31:58" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="wish86.exe" SIZE="393216" CHECKSUM="0x4A8216DD" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Wish Application" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tk 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="wish86.exe" LEGAL_COPYRIGHT="Copyright © 2000 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 23:31:58" UPTO_LINK_DATE="03/12/2015 23:31:58" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="zlib1.dll" SIZE="107520" CHECKSUM="0x6E91C07D" BIN_FILE_VERSION="1.2.8.0" BIN_PRODUCT_VERSION="1.2.8.0" PRODUCT_VERSION="1.2.8" FILE_DESCRIPTION="zlib data compression library" PRODUCT_NAME="zlib" FILE_VERSION="1.2.8" ORIGINAL_FILENAME="zlib1.dll" INTERNAL_NAME="zlib1.dll" LEGAL_COPYRIGHT="(C) 1995-2013 Jean-loup Gailly & Mark Adler" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x20A00" LINKER_VERSION="0x10000" UPTO_BIN_FILE_VERSION="1.2.8.0" UPTO_BIN_PRODUCT_VERSION="1.2.8.0" LINK_DATE="05/13/2013 12:42:08" UPTO_LINK_DATE="05/13/2013 12:42:08" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="FOLDER\freewrap.exe" SIZE="8674276" CHECKSUM="0x87EABBB8" MODULE_TYPE="WIN32" PE_CHECKSUM="0x347472" LINKER_VERSION="0x10000" LINK_DATE="02/22/1970 08:06:24" UPTO_LINK_DATE="02/22/1970 08:06:24" />
<MATCHING_FILE NAME="FOLDER\freewrap664\win32\freewrap.exe" SIZE="8674276" CHECKSUM="0x87EABBB8" MODULE_TYPE="WIN32" PE_CHECKSUM="0x347472" LINKER_VERSION="0x10000" LINK_DATE="02/22/1970 08:06:24" UPTO_LINK_DATE="02/22/1970 08:06:24" />
<MATCHING_FILE NAME="FOLDER\freewrap664\win32\freewrapTCLSH.exe" SIZE="5935627" CHECKSUM="0x4728114A" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1E8C2F" LINKER_VERSION="0x10000" LINK_DATE="07/04/1971 17:12:48" UPTO_LINK_DATE="07/04/1971 17:12:48" />
<MATCHING_FILE NAME="FOLDER\freewrap664\win64\freewrap.exe" SIZE="9044047" CHECKSUM="0xEAAC5906" MODULE_TYPE="WIN32" PE_CHECKSUM="0x3406BC" LINKER_VERSION="0x0" LINK_DATE="01/19/2015 01:41:48" UPTO_LINK_DATE="01/19/2015 01:41:48" />
<MATCHING_FILE NAME="FOLDER\freewrap664\win64\freewrapTCLSH.exe" SIZE="6025630" CHECKSUM="0xD1018E6A" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1D252E" LINKER_VERSION="0x0" LINK_DATE="01/15/2015 01:21:20" UPTO_LINK_DATE="01/15/2015 01:21:20" />
<MATCHING_FILE NAME="FOLDER\kit\tclkit.exe" SIZE="1334267" CHECKSUM="0xEFE507F5" BIN_FILE_VERSION="8.5.2.9" BIN_PRODUCT_VERSION="8.5.2.9" PRODUCT_VERSION="8.5.9" FILE_DESCRIPTION="Tclkit, a standalone runtime for Tcl/Tk" COMPANY_NAME="Equi4 Software" PRODUCT_NAME="Tclkit 8.5 for Windows" FILE_VERSION="8.5.9" ORIGINAL_FILENAME="tclkit-gui.exe" LEGAL_COPYRIGHT="Copyright © 1989-2009 by J.Ousterhout et al." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.5.2.9" UPTO_BIN_PRODUCT_VERSION="8.5.2.9" LINK_DATE="09/09/2010 09:22:14" UPTO_LINK_DATE="09/09/2010 09:22:14" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="FOLDER\kit\tclkit2.exe" SIZE="1334267" CHECKSUM="0xEFE507F5" BIN_FILE_VERSION="8.5.2.9" BIN_PRODUCT_VERSION="8.5.2.9" PRODUCT_VERSION="8.5.9" FILE_DESCRIPTION="Tclkit, a standalone runtime for Tcl/Tk" COMPANY_NAME="Equi4 Software" PRODUCT_NAME="Tclkit 8.5 for Windows" FILE_VERSION="8.5.9" ORIGINAL_FILENAME="tclkit-gui.exe" LEGAL_COPYRIGHT="Copyright © 1989-2009 by J.Ousterhout et al." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.5.2.9" UPTO_BIN_PRODUCT_VERSION="8.5.2.9" LINK_DATE="09/09/2010 09:22:14" UPTO_LINK_DATE="09/09/2010 09:22:14" VER_LANGUAGE="Englisch (USA) [0x409]" />
<MATCHING_FILE NAME="FOLDER\kit\tclkit864.exe" SIZE="3933431" CHECKSUM="0x717476F1" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tclkit, a standalone runtime for Tcl/Tk" COMPANY_NAME="Equi4 Software" PRODUCT_NAME="Tclkit 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tclkit-gui.exe" LEGAL_COPYRIGHT="Copyright © 1989-2009 by J.Ousterhout et al." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="04/12/2015 23:13:37" UPTO_LINK_DATE="04/12/2015 23:13:37" VER_LANGUAGE="Englisch (USA) [0x409]" />
</EXE>
<EXE NAME="tcl86.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="tcl86.dll" SIZE="1228800" CHECKSUM="0x3BC33EBF" BIN_FILE_VERSION="8.6.2.4" BIN_PRODUCT_VERSION="8.6.2.4" PRODUCT_VERSION="8.6.4" FILE_DESCRIPTION="Tcl DLL" COMPANY_NAME="ActiveState Corporation" PRODUCT_NAME="Tcl 8.6 for Windows" FILE_VERSION="8.6.4" ORIGINAL_FILENAME="tcl86.dll" LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState Corporation, et al" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x12F33A" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.6.2.4" UPTO_BIN_PRODUCT_VERSION="8.6.2.4" LINK_DATE="03/12/2015 22:59:49" UPTO_LINK_DATE="03/12/2015 22:59:49" VER_LANGUAGE="Englisch (USA) [0x409]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1067008" CHECKSUM="0xD3859AE" BIN_FILE_VERSION="5.1.2600.6532" BIN_PRODUCT_VERSION="5.1.2600.6532" PRODUCT_VERSION="5.1.2600.6532" FILE_DESCRIPTION="Client-DLL für Windows NT-Basis-API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Betriebssystem Microsoft® Windows®" FILE_VERSION="5.1.2600.6532 (xpsp_sp3_qfe.140312-0419)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. Alle Rechte vorbehalten." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x10EBEB" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.6532" UPTO_BIN_PRODUCT_VERSION="5.1.2600.6532" LINK_DATE="03/12/2014 10:48:40" UPTO_LINK_DATE="03/12/2014 10:48:40" VER_LANGUAGE="Deutsch (Deutschland) [0x407]" />
</EXE>
</DATABASE>
是的,我使用的是Windows這一點。由於this issue,無法使用Linux進行此任務。
我應該怎麼做?
感謝您的回覆!我的TCL正在努力處理您提供的第一行('expect -re {Login \ [(\ d)(\ d)(\ d)\]:}')。此行導致TCL崩潰。如果我將期望參數語法更改爲'expect {-re -n「Login \ [(\ d)(\ d)(\ d)\]:」}',TCL並不會崩潰,但會在'Login [517 ]: 正通過AB1CDE-11>接收XYZ SMC。有什麼我做錯了嗎? –
Btw使用基於一個索引。您提供的解決方案適用於我的案例。 –