我有一个在Windows上运行的程序,它通过CIFS扫描Netapp文件服务器上的共享。当扫描程序在W2K3上运行并退出时,在Netapp文件服务器上运行"cifs session -c“会显示会话已消失。当相同的扫描程序在W2K8上运行并退出时,上面的Netapp命令显示会话仍然处于活动状态。scanner应用程序已经退出,因此会话上应该不再有流量。
到目前为止我所做的: 1)等待(超过) cifs.idle_timeout秒数来查看会话是否消失。事实并非如此。2)分析了W2K3->Netapp和W2K8->Netapp之间通信的数据包跟踪。W2K3跟踪显示TREE_CONNECT和TREE_DISCONNECT,但W2K8跟踪仅显示TREE_CONNECT请求。我将验证这一点,但我认为W2K3上的TREE_DISCONNECT之后是一个注销请求(这会导致会话结束吗?)。3)要查看Netapp不在图片中时的情况--从W2K8客户端机器,我通过windows-explorer \C$访问。这会在网络上产生一个TREE_CONNECT请求。现在,我关闭了资源管理器窗口,W2K3-服务器机器也关闭了会话,即使W2K8-client生成的网络上没有TREE_DISCONNECT。
因此,看起来Netapp正在期待W2K8没有发送的东西。
问:我是否可以在扫描仪应用程序中使用特定的API来i)在完成扫描后发送明确的注销SMB请求?ii)或者,重新使用现有会话b/w W2K8客户端和Netapp文件服务器进行新的扫描?ii)有人遇到过这种或类似的情况吗?
提前谢谢。
发布于 2011-02-02 08:24:26
有关API -请查看NetUseEnum和NetUseDel。
您看到的断开连接是由于空闲会话(没有打开句柄的会话)造成的。我不确定这是由服务器完成的(这将表明Netapp和Windows之间的差异)还是由客户端完成的(您的扫描程序持有一个打开的句柄,可能是当前目录,而资源管理器在您关闭窗口时关闭句柄)。
发布于 2011-03-05 00:59:08
我不确定您想要实现什么,但使用NetApp工具/API可能会更容易。对于许多管理任务,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,你可以看看C/C++、Java、Perl和.Net的Web Services API的Manageability SDK。在这种情况下,您需要查看cifs-share-list应用程序接口(7.x/8.x之间略有不同)。
https://stackoverflow.com/questions/4869374
复制相似问题