Как я могу повторно использовать существующий сеанс CIFS или явно завершить один сеанс программно (от W2K8 до Netapp)? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть программа, которая работает в 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-explorer \\ C $. Это вызывает запрос TREE_CONNECT на проводе. Теперь я закрыл окно обозревателя, и компьютер с W2K3-сервером закрыл сеанс, даже если на проводе, сгенерированном W2K8-клиентом, не было TREE_DISCONNECT.

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

Вопрос. Существует ли конкретный API, который я могу использовать в своем приложении для сканирования? я) отправить явный запрос LOGOFF SMB, когда я закончу сканирование? ii) или повторно использовать существующий сеанс ч / б W2K8-клиент и файлер Netapp для нового сканирования? ii) кто-нибудь сталкивался с подобными или похожими сценариями?

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

Ответы [ 2 ]

0 голосов
/ 04 марта 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. В этом случае вы захотите взглянуть на API cifs-share-list (немного отличается от 7.x / 8.x).

0 голосов
/ 02 февраля 2011

Для API - посмотрите NetUseEnum и NetUseDel.

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

...