Привет. Имеется циска 3845 (c3845-advipservicesk9-mz.151-4.M4.bin). Требуется периодически делать выгрузку определенной информации из контроллера домена для формирования конфигурации абонентов voip (на основе voice register dn и voice register pool, sip с логином и паролем). Единственный способ к которому я пришел (поправьте если ошибаюсь) использовать TCL скрипты. На циске имеется TCL версии 8.3 (проверить через CLI версию не удалось - не нашел информации как это сделать) поэтому пришлось использовать старые компоненты библиотеки tcllib (1.7), в частности добавил компоненты ldap и asn.
Написал самый примитивный скрипт:
# --------------------------------------------------------------------------
proc init { } {
puts "Connecting"
set handle [ldap::connect 10.0.0.1]
puts "Binding"
ldap::bind $handle user@domain.com password
puts "Checking"
set result [ldap::search $handle "ou=Domain Users, dc=domain, dc=com" "(telephoneNumber=101)" "mail"]
puts "Closing"
ldap::disconnect $handle
puts "open file"
set fp [open "flash:execute.log" "w"]
puts "write file"
puts $fp [exec "show clock"]
puts $fp $result
close $fp
}
package require ldap
init
# --------------------------------------------------------------------------
Файл скрипта загружен в flash:. Если запускать через оболочку tclsh:
router(tcl)# source flash:script.tcl
то скрипт выполняется: циска подключается через ldap к домену, делает запрос и полученный результат сохраняет в файле. Если запускать скрипт напрямую:
router# tclsh flash:script.tcl
то процесс застревает на этапе "Connecting" и отменить его не получается ни одним из известных мне методов (Ctrl+c, Ctrl+z, Ctrl+Shift+6). При этом на сервере домена, в netstat я вижу что соединение было установленно.
естественно второй из указанных вариантов выполнения скрипта для меня более важен, т.к. в конечном виде он должен будет запускаться через kron.
Собственно вопрос: почему может зависать подключение?