Como saber qual computador tem um arquivo aberto em um compartilhamento de rede?

21

Ambiente:

Windows XP sp3, Servidor Windows 2003

Problema:

Temos várias dezenas de máquinas de quiosque, cada uma com o mesmo nome de logon, que ocasionalmente e brevemente um arquivo em um compartilhamento. A taxa é de vários bloqueios e libera um minuto.

Recentemente, experimentamos um dos clientes bloqueando um arquivo exclusivamente e, em seguida, não liberando o arquivo.

Podemos fechar o arquivo quando isso acontece, mas há vários minutos ou mais, e isso é uma interrupção inaceitável.

O problema de bloqueio não lançado aconteceu várias vezes no último mês. Eu tenho procurado qual dispositivo de quiosque é responsável pelo bloqueio e detectá-lo rapidamente quando isso acontece.

Parece haver uma lacuna nas informações que podemos obter do servidor:

Podemos ver várias ferramentas:
-Que arquivos estão abertos e bloqueados. (muitas maneiras)
-Que logon tem um arquivo específico aberto ou bloqueado. (muitas maneiras)
-Que um computador em particular geralmente tem um arquivo aberto. (Pastas compartilhadas, sessões mmc)

O que não podemos ver é que um computador específico tenha um arquivo específico aberto e bloqueado.

Alguém sabe de uma maneira de chegar a isso?

Obrigado -

Rob

    
por RobW 03.02.2010 / 19:52

10 respostas

10

Confira este pequeno utilitário freeware ( ShareWatch ), acho que ele fará o que você está procurando.

Um dos recursos listados: "Mostra os usuários e computadores que estão conectados a cada compartilhamento, além de quais arquivos estão abertos."

    
por 03.02.2010 / 20:52
7

Digite a linha de comando (CMD),

digite: openfiles / query ip do compartilhamento de rede

E o nome de usuário e a senha podem ser necessários.

Você pode obter mais informações de arquivos abertos em aqui .

    
por 03.02.2010 / 20:19
5

Acredito que você queira consultar a postagem da Sky100 como ele está correto, não fornecer a você o que você pediu, mas fornecer a você o que você precisa para resolver o problema. Você precisará fazer referência ao número de ID bloqueado por meio do comando "openfile / query / v" (detalhado), pois ele fornecerá os dados necessários. Procure o nome do arquivo na lista, os dados mostrarão qual item tem o & lido; escrita habilitado, e junto com ele irá fornecer um número de identificação específico. Não, talvez você não consiga descobrir qual sistema específico bloqueou o arquivo, mas, com as ferramentas fornecidas, pode desconectar esse usuário do arquivo. Aqui está um passo-a-passo para simplificar minhas divagações.

1) No servidor de arquivos com direitos de administrador, faça o Start > Executar > CMD [ENTER]

2) CD Desktop [ENTER] (Você verá o porquê em breve.)

3) openfiles / query / v > file.txt [ENTER] (Isto irá criar um arquivo na área de trabalho com uma lista de todos os arquivos abertos no servidor.)

4) Abra o arquivo.txt e procure a linha que contém o nome do arquivo e as permissões de leitura + gravação.

5) Anote o número de identificação nessa linha e volte ao seu console de comando.

6) openfiles / disconnect / ID [Coloque o número ID aqui] [ENTER]

Contanto que você tenha direitos administrativos no servidor de arquivos, ele desconectará esse sistema do arquivo e, supondo que seu sistema seja automatizado, deve permitir que as coisas continuem se movendo conforme necessário.

Referências: openfiles / query /? openfiles / disconnect /?

Se você precisar de um script ou aplicativo programado para seu sistema, sinta-se à vontade para comentar e forneceremos informações de contato, um preço muito baixo junto com a tecnologia. suporte na minha aplicação.

    
por 16.02.2010 / 17:14
2

O problema é que você está tentando resolver o que você declarar (ou seja, mapear o computador cliente específico (não usuário) para o arquivo bloqueado) ou será que existe um problema de bloqueio que você precisa para resolver?

Se o último for ajudar, há duas coisas que eu verifico:

  • Verifique o AV que está instalado seus clientes - eu vi vários Lado do cliente AV causar seriamente desagradável comportamento de bloqueio anômalo em compartilhamentos.

  • Tente desativar oportunista bloqueando , definindo o valor do Registro EnableOpLocks como 0.

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Serviços \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0 ou 1 Padrão: 1 (habilitado)

Isso reduzirá um pouco o desempenho, mas não deverá quebrar nada.

Adoraria ver alguém realmente respondendo à sua pergunta declarada - é um problema interessante.

    
por 03.02.2010 / 20:14
2

Na minha tentativa de solucionar o problema do RobW e fornecer uma solução alternativa, não consegui responder à sua pergunta.

Acredito que a solução que você está procurando esteja na configuração de políticas de auditoria nesse sistema e, em seguida, na configuração desse arquivo para auditar qualquer acesso desse usuário em particular. As etapas para realizar isso podem variar dependendo da configuração de sua rede, então vou encaminhá-lo ao link de technet da microsoft sobre como configurar sistemas diferentes para auditoria.

link

Depois de configurá-lo, certificando-se de seguir com a configuração do arquivo específico que você deseja monitorar, anexando a conta de usuário como um Auditor, você deve estar pronto para ir.

Basta verificar seus logs de eventos de segurança no futuro e, embora ele liste cada sistema (já que todos usam o mesmo nome de usuário), não deve ser difícil classificar e localizar qual sistema possui acesso de leitura e gravação ao sistema. arquivo.

Pode ser útil configurar o log de segurança para limpar a cada alguns dias.

Se isso não funcionar, é provável que você precise configurar o sistema para cada nome de host que acessa o arquivo, em vez do nome do usuário. Acredito que isso seja possível através do Console de Gerenciamento Microsoft.

Mais uma vez, se você precisar de programação, não sou um empresário interessado em gastar muito do seu dinheiro em algum programa minúsculo. Eu forneço programação de qualidade a um preço que até mesmo um indivíduo não evita. Espero que isso ajude você a resolver seu problema.

    
por 18.02.2010 / 18:54
1

Eu também atribuo usuários diferentes a quiosques diferentes, se possível - isso pode ajudá-lo a analisar outros registros ...

Se isso não for possível: Esboço de solução possível: Uma solução poderia ser executar uma ferramenta como sysinternals processmonitor com um filtro adequado (para o arquivo em questão) nos quiosques (não sei se você pode ocultá-lo). Existem algumas opções de linha de comando que você pode usar para salvar os dados capturados no arquivo.

Colete esses itens nos vários quiosques e importe-os para, por exemplo, Excel e procure o que não foi fechado ...

    
por 28.07.2011 / 10:57
0

Que tal usar o comando netstat para determinar isso?

netstat -an | find ":445"

Isso deve fornecer os endereços IP das máquinas conectadas.

Se você deseja os nomes de host em vez de endereços IP, use

netstat -a | find "microsoft-ds"

no entanto, isso levará mais tempo para ser executado, especialmente em servidores de arquivos ou controladores de domínio ocupados, pois ele terá muitas pesquisas de host a serem executadas.

Além disso, lembre-se de que os resultados mostrarão as portas de entrada, de saída e de inatividade.

As conexões de entrada mostrarão: 445 na coluna da esquerda, saída na coluna da direita.

Você pode ignorar com segurança quaisquer resultados que declarem 'LISTENING' e também quaisquer linhas que mostrem apenas endereços IP locais (por exemplo, 0.0.0.0 ou 127.0.0.1) ou o próprio nome de host do computador, se você não usar a opção -n.

Por exemplo:

Z:\>netstat -an | find ":445"
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    127.0.0.1:445          127.0.0.1:41764        ESTABLISHED
  TCP    127.0.0.1:445          127.0.0.1:41767        ESTABLISHED
  TCP    127.0.0.1:41764        127.0.0.1:445          ESTABLISHED
  TCP    127.0.0.1:41767        127.0.0.1:445          ESTABLISHED
  TCP    192.168.16.17:445      192.168.16.87:1098     ESTABLISHED
  TCP    192.168.16.17:18055    192.168.16.24:445      ESTABLISHED
  TCP    192.168.16.17:20678    192.168.16.24:445      ESTABLISHED
  UDP    0.0.0.0:445            *:*

O único host conectado aqui é 192.168.16.87. As conexões para 192.168.16.24 são de saída. Todas as outras conexões são conexões locais.

    
por 18.02.2010 / 19:13
0

Lembro-me de que havia uma ferramenta gráfica no Windows para verificar compartilhamentos usados e arquivos bloqueados.

Deve estar nas "ferramentas do sistema" em "Gerenciamento do computador" (~ traduzido do francês ...), sob o nome "pastas compartilhadas".

    
por 13.07.2010 / 01:43
0

Eu sei que isso é muito antigo, mas o ADSI fornece a interface WinNT: //, que permite que você acesse o serviço LANMANSERVER e consulte as propriedades já expostas no "Pastas Compartilhadas" mmc snapin. No momento, estou pesquisando uma maneira de vincular um host e um usuário a um arquivo aberto.

    
por 03.10.2011 / 20:58
-1

Se fosse eu e eu tivéssemos acesso a uma máquina linux na mesma sub-rede ... Eu faria um tcpdump na porta compartilhada em questão para a caixa em que eles estão mantendo o arquivo aberto.

Se você não tiver unix, você ainda pode usar o tcpdump, mas precisa instalá-lo.

do linux ... eu faria algo assim: tcpdump -ieth0 -s0 -X porta do nome do host 1234 | grep -i "nameoffile"

Eu sei que a maior parte da carga útil é binária ... No entanto, eu apostaria que o primeiro cabeçalho para negociar a autenticação para acessar o arquivo é em texto não criptografado.

Isso mostrará a você todos os hosts de extremidade distante que se conectarem a essa caixa e onde o nome do arquivo é encontrado em seus dados de pacote (se não estiverem criptografados ou em binário).

Boa sorte! Mas pela minha experiência, o seguinte deve ser usado:

1) Arquivos compartilhados é uma má ideia! Especialmente com sistemas remotos que podem deixar um arquivo bloqueado se eles abandonarem a conexão ou tiverem conexões lentas.

2) O acesso para o arquivo compartilhado causará uma condição de corrida entre os clientes. Desperdiçando tempo valioso de tick.

3) Se você DEVE usar um arquivo compartilhado ... Crie nomes de usuários diferentes para cada site remoto para poder depurar corretamente.

Melhor cenário ... livre-se do arquivo e mesclar-se no SQL ou criar um serviço da Web que permita aos clientes acessar o arquivo ou os dados.

++ Todd

    
por 16.01.2013 / 20:18