Medio ambiente:
Windows XP sp3, servidor Windows 2003
Problema:
Tenemos varias docenas de máquinas de quiosco, cada una con el mismo nombre de inicio de sesión, que ocasionalmente y brevemente un archivo en un recurso compartido. La tasa es de varias cerraduras y libera un minuto.
Recientemente, hemos experimentado que uno de los clientes bloquea un archivo exclusivamente y luego no lo libera.
Podemos cerrar el archivo cuando esto sucede, pero transcurren varios minutos o más, y esta es una interrupción inaceptable.
El problema de bloqueo inédito ha sucedido varias veces en el último mes. He estado buscando qué dispositivo de quiosco es responsable del bloqueo y para detectarlo rápidamente cuando ocurre.
Parece que hay un vacío en la información que podemos obtener del servidor:
Podemos ver desde varias herramientas:
-Qué archivos están abiertos y bloqueados. (muchas formas)
-Qué inicio de sesión tiene un archivo específico abierto o bloqueado. (muchas formas)
-Que una computadora en particular generalmente tiene un archivo abierto. (Carpetas compartidas, sesiones mmc)
Lo que no podemos ver es que una computadora específica tiene un archivo específico abierto y bloqueado.
Alguien sabe de una manera de llegar a esto?
Gracias -
Robar
Respuestas:
Echa un vistazo a esta pequeña utilidad gratuita ( ShareWatch ), creo que hará lo que estás buscando.
Una de las características enumeradas: "Muestra los usuarios y las computadoras que están conectados a cada recurso compartido, junto con los archivos que están abiertos".
fuente
Ingrese la línea de comando (CMD),
luego escriba: openfiles / query ip del network share
Y el nombre de usuario y la contraseña pueden ser necesarios.
Puede obtener más información de archivos abiertos aquí .
fuente
Creo que querrá volver a consultar la publicación de Sky100 porque él es correcto, no para proporcionarle lo que solicitó, sino para proporcionarle lo que necesita para resolver su problema. Deberá hacer referencia al número de ID bloqueado mediante el comando "openfile / query / v" (detallado) ya que le proporcionará los datos que necesita. Busque el nombre del archivo dentro de la lista dada, los datos mostrarán qué elemento tiene habilitada la lectura y escritura, y junto con él proporcionará un número de identificación específico. No, es posible que no pueda encontrar qué sistema específico tiene el archivo bloqueado, pero con las herramientas proporcionadas, puede desconectar a ese usuario del archivo. Aquí hay un paso a paso para simplificar mis divagaciones.
1) En el servidor de archivos con derechos de administrador, haga Inicio> Ejecutar> CMD [ENTER]
2) CD Desktop [ENTER] (pronto verá por qué).
3) openfiles / query / v> file.txt [ENTER] (Esto creará un archivo en el escritorio con una lista de todos los archivos abiertos en el servidor).
4) Abra el archivo.txt y busque la línea que contiene su nombre de archivo y los permisos de lectura + escritura.
5) Anote el número de identificación en esa línea y regrese a su consola de comandos.
6) abrir archivos / desconectar / ID [Ponga el número de identificación aquí] [ENTER]
Siempre que tenga derechos administrativos en el servidor de archivos, desconectará ese sistema del archivo y suponiendo que su sistema esté automatizado, debería permitir que las cosas sigan avanzando según sea necesario.
Referencias: archivos abiertos / consulta /? archivos abiertos / desconectar /?
Si necesita un script o una aplicación programada para su sistema, no dude en comentar y le proporcionaré información de contacto, un precio muy bajo junto con tecnología. Soporte en mi solicitud.
fuente
¿El problema que está tratando de resolver es el que usted indica (es decir, asignar el equipo cliente específico (no el usuario) al archivo bloqueado) o es que hay un problema de bloqueo que debe resolver?
Si esto último ayudara, hay dos cosas que miraría:
Verifique el AV que está instalado en sus clientes: he visto que varios AV del lado del cliente causan un comportamiento de bloqueo anomólico muy desagradable en los recursos compartidos.
Intente deshabilitar el bloqueo oportunista estableciendo el valor del registro EnableOpLocks en 0.
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0 o 1 Valor predeterminado: 1 (habilitado)
Esto reducirá un poco el rendimiento, pero no debería romper nada.
Sin embargo, me encantaría ver a alguien responder realmente a su pregunta planteada: es un problema interesante.
fuente
En mi intento de solucionar el problema de RobW y proporcionar una solución alternativa, no respondí a su pregunta.
Creo que la solución que está buscando será configurar políticas de auditoría en ese sistema y luego configurar ese archivo para auditar cualquier acceso de ese usuario en particular. Los pasos para realizar esto pueden variar según la configuración de su red, por lo que lo referiré al enlace technet de microsoft sobre cómo configurar diferentes sistemas para auditar.
http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx
Después de configurar eso, asegurándose de continuar con la configuración del archivo específico que desea monitorear adjuntando la cuenta de usuario como Auditor, debe estar listo para comenzar.
Simplemente verifique sus registros de eventos de seguridad en el futuro y aunque enumerará cada sistema (ya que todos usan el mismo nombre de usuario), no debería ser difícil clasificar y localizar qué sistema tiene actualmente acceso de lectura y escritura al archivo.
Puede ser útil configurar el registro de seguridad para borrar cada pocos días.
Si esto no funciona, es probable que deba configurar el sistema por cada nombre de host que acceda al archivo, en lugar del nombre de usuario. Creo que esto es posible a través de Microsoft Management Console.
Nuevamente, si necesita programación, no soy un hombre de negocios interesado en tomar un montón de su dinero para un pequeño programa. Proporciono programación de calidad a un precio que incluso un individuo no rehuiría. Espero que esto te ayude a resolver tu problema.
fuente
Si fuera posible, también asignaría diferentes usuarios a diferentes quioscos; podría ayudarlo a analizar otros registros ...
Si eso no es posible: Esquema de la posible solución: una solución podría ser ejecutar una herramienta como sysinternals processmonitor con un filtro adecuado (para el archivo en cuestión) en los quioscos (no sé si puede ocultarlo). Hay algunas opciones de línea de comandos con las que puedes jugar que guardan los datos capturados en el archivo.
Reúna estos de los diversos quioscos, impórtelos en, por ejemplo, Excel y busque el que no estaba cerrado ...
fuente
¿Qué pasa con el uso del comando netstat para determinar esto?
Esto debería proporcionarle las direcciones IP de las máquinas conectadas.
Si desea los nombres de host en lugar de las direcciones IP, use
sin embargo, esto tardará más en ejecutarse, especialmente en servidores de archivos ocupados o controladores de dominio, ya que tendrá que realizar muchas búsquedas de host.
Además, tenga en cuenta que los resultados mostrarán puertos de escucha entrantes, salientes e inactivos.
Las conexiones entrantes mostrarán: 445 en la columna izquierda, saliente lo mostrará en la columna derecha.
Puede ignorar con seguridad cualquier resultado que indique 'ESCUCHAR' y también cualquier línea que muestre solo direcciones IP locales (por ejemplo, 0.0.0.0 o 127.0.0.1) o el nombre de host del propio equipo si no usa la opción -n.
Por ejemplo:
El único host conectado aquí es 192.168.16.87. Las conexiones a 192.168.16.24 son salientes. Todas las demás conexiones son conexiones locales.
fuente
Recuerdo que había una herramienta gráfica dentro de Windows para verificar los recursos compartidos usados y los archivos bloqueados.
Debe estar en las "herramientas del sistema" en "Administración de computadoras" (~ traducido del francés ...), bajo el nombre de "carpetas compartidas".
fuente
Sé que esto es muy antiguo, pero ADSI proporciona la interfaz WinNT: //, que le permite acceder al servicio LANMANSERVER y consultar las propiedades ya expuestas en el complemento mmc "Carpetas compartidas". Actualmente estoy investigando una forma de vincular un host y un usuario a un archivo abierto.
fuente
Si fuera yo y tuviera acceso a una máquina Linux en la misma subred ... Haría un tcpdump en el puerto compartido en cuestión en el cuadro en el que mantienen abierto el archivo.
Si no tiene Unix, aún puede usar tcpdump pero debe instalarlo.
de Linux ... Haría algo como esto: tcpdump -ieth0 -s0 -X hostname port 1234 | grep -i "nameoffile"
Sé que la mayor parte de la carga útil es binaria ... Sin embargo, apostaría un buen dinero a que el encabezado inicial para negociar la autenticación para acceder al archivo está en texto claro.
Esto le mostrará cada host remoto que se conecta a ese cuadro y dónde se encuentra el nombre de archivo dentro de sus paquetes de datos (si no está encriptado o en binario).
¡Buena suerte! Pero desde mi experiencia, se debe usar lo siguiente:
1) ¡Los archivos compartidos son una mala idea! Especialmente con sistemas remotos que podrían dejar un archivo bloqueado si pierden la conexión o tienen conexiones lentas.
2) El acceso al archivo compartido causará una condición de carrera entre clientes. Perder valioso tiempo de tic.
3) Si DEBE usar un archivo compartido ... Cree diferentes nombres de usuario para cada sitio remoto para que pueda depurarlo correctamente.
El mejor escenario ... deshacerse del archivo y combinarlo en SQL o crear un servicio web que permita a los clientes acceder al archivo o los datos.
++ Todd
fuente