Как я могу повторно использовать существующий сеанс CIFS или явно завершить его программно (от W2K8 до NetApp)?

У меня есть программа, которая работает в Windows и сканирует общие ресурсы в файле Netapp через CIFS. Когда сканер запускается на W2K3 и завершает работу, запуск "cifs session -c" в файлере NetApp показывает, что сеанс пропал. Когда тот же сканер запускается на W2K8 и завершается, приведенная выше команда Netapp показывает, что сеанс все еще активен. Приложение сканера уже завершило работу, поэтому в сеансе больше не должно быть трафика.

Что я сделал до сих пор: 1) подождал (более) числа секунд cifs.idle_timeout, чтобы увидеть, уходит ли сеанс. Это не. 2) проанализированы трассировки пакетов для связи между W2K3->Netapp и W2K8->Netapp. Трассировка W2K3 показывает TREE_CONNECT и TREE_DISCONNECT, но трассировка W2K8 показывает только запрос TREE_CONNECT. Я проверю это, но я думаю, что за TREE_DISCONNECT на W2K3 следует запрос LOGOFF (который, как я полагаю, приводит к завершению сеанса?). 3) Чтобы посмотреть, как все будет выглядеть, когда NetApp не на картинке - с машины с W2K8-клиентом я получил доступ через Windows-проводник \\C$. Это вызывает запрос TREE_CONNECT в сети. Теперь я закрыл окно проводника, и машина с сервером W2K3 закрыла сеанс, хотя на проводе, сгенерированном клиентом W2K8, не было TREE_DISCONNECT.

Похоже, Netapp ожидает чего-то, чего W2K8 не отправляет.

Вопрос: Есть ли специальный API, который я могу использовать в своем приложении сканера, чтобы i) отправить явный SMB-запрос LOGOFF после завершения сканирования? ii) или повторно использовать существующий сеанс ч/б клиента W2K8 и файлового устройства NetApp для нового сканирования? ii) кто-нибудь сталкивается с этим или подобными сценариями?

Заранее спасибо.


person AAG    schedule 01.02.2011    source источник


Ответы (2)


API — см. NetUseEnum и NetUseDel .

Отключение, которое вы видите, связано с незанятым сеансом (сеанс без открытых дескрипторов). Я не уверен, что это делается сервером (что указывало бы на разницу между Netapp и Windows) или клиентом (ваш сканер держит открытый дескриптор, возможно, текущий каталог, в то время как Проводник закрывает дескриптор, когда вы закрываете окно ).

person John    schedule 02.02.2011

Я не уверен, чего вы пытаетесь достичь, но может быть проще использовать инструменты/API NetApp. Data ONTAP PowerShell Toolkit действительно может упростить многие задачи администрирования:

PS C:\> Connect-NaController fas2040rre1
PS C:\> Get-NaCifsShare
MountPoint                                    ShareName                 Description
----------                                    ---------                 -----------
/etc                                          ETC$                      Remote Administration
/vol/vol0/home                                HOME                      Default Share
                     ... snip ...
/vol/cifs/backups                             backups

А если PowerShell вам не по душе, вы можете взглянуть на SDK для управления для API веб-служб для C/C++, Java, Perl и .Net. В этом случае вам следует взглянуть на cifs-share-list API (немного отличающиеся между 7.x/8.x).

person Eric Nicholson    schedule 04.03.2011