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

21

Meio Ambiente:

Windows XP sp3, servidor Windows 2003

Problema:

Temos várias dúzias 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 depois não o liberando. 

Podemos fechar o arquivo quando isso acontece, mas decorrem 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 mês passado. Eu estive procurando 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 em várias ferramentas:
-Que arquivos estão abertos e bloqueados. (de várias maneiras)
- Qual logon possui um arquivo específico aberto ou bloqueado. (várias maneiras)
- Que um computador em particular geralmente tenha um arquivo aberto. (Pastas compartilhadas, sessões mmc)

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

Alguém sabe como encontrar isso?

Obrigado -

Roubar

RobW
fonte
1
Não é exatamente o que você está perguntando, mas uma abordagem alternativa seria criar uma conta separada para cada sistema.
18710 Bryan

Respostas:

10

Confira este pequeno utilitário gratuito ( 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".

texto alternativo

techie007
fonte
1
Obrigado por isso - eu tentei o Sharewatch. Na minha situação - mais de uma dúzia de clientes com os mesmos nomes de login - ele combina os arquivos abertos e as estações de trabalho na mesma lista. Você não pode dizer em qual estação de trabalho está aberta. Além disso, selecionar Propriedades simplesmente informa que uma estação de trabalho tem x arquivos abertos, e não seus nomes de arquivo. Selecionar Propriedades para o arquivo fornece informações semelhantes.
RobW
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 sobre arquivos abertos aqui .

sky100
fonte
Obrigado. O Openfiles fornece praticamente a mesma saída que a sessão de rede no console do servidor. Não indica o nome do computador que abriu o arquivo. Estou procurando uma conexão de arquivo-> computador, não uma conexão de arquivo-> usuário.
RobW
5

Acredito que você queira consultar a postagem do Sky100, pois ele está correto, não fornecendo o que você pediu, mas fornecendo o que você precisa para resolver seu problema. Você precisará fazer referência ao número de ID bloqueado através do comando "openfile / query / v" (detalhado), pois ele fornecerá os dados necessários. Pesquise o nome do arquivo na lista fornecida, os dados mostrarão qual item tem a leitura e gravação ativada e, juntamente com ele, fornecerão um número de identificação específico. Não, talvez você não consiga descobrir qual sistema específico tem o arquivo bloqueado, mas com as ferramentas fornecidas, você 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, inicie> Executar> CMD [ENTER]

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

3) openfiles / query / v> file.txt [ENTER] (Isso 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 e gravação.

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

6) arquivos abertos / desconexão / ID [Coloque aqui o número de identificação] [ENTER]

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

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

Se você precisar de um script ou aplicativo programado para o seu sistema, não hesite em comentar e fornecerei informações de contato, a um preço muito baixo, juntamente com a tecnologia. suporte na minha aplicação.

Thomas
fonte
Ha! Meu problema foi localizar o computador no qual o arquivo foi aberto. Você tem alguma idéia de como fazer isso? Identificar e fechar o arquivo é simples e existem várias maneiras de projetar esse resultado. Agradeço a resposta, e a sua oferta comercial me deu uma risada manhã cedo ;-)
RobW
Minhas desculpas, eu não sabia que o processo de openfiles não era a solução. Pelo que você descreveu, parece que isso teria resolvido sua necessidade de dar uma olhada no sistema, pois ele não fecha o arquivo, mas apenas remove essa configuração bloqueada. De fato, criei o aplicativo para minha empresa e ele pode ser automatizado para executar todos os poucos para evitar essas complicações. Eu acho que isso não vem ao caso, no entanto. Para responder à sua pergunta direta: Sim, deve haver uma maneira de auditar esses sistemas quanto ao acesso a esse arquivo. Por favor, veja o meu próximo post para mais detalhes.
Thomas
Na verdade, voltando e relendo sua postagem ... "Podemos fechar o arquivo quando isso acontecer, mas decorrem vários minutos ou mais e isso é uma interrupção inaceitável". A razão pela qual sua solução não está funcionando é porque você está FECHANDO o arquivo. Minha solução e parcialmente a Sky100, fornecidas anteriormente, não fecham o arquivo, mas ALTERAM os direitos de acesso para Somente leitura. Novamente, estou confuso sobre como os arquivos abertos não são a solução que você está procurando. Experimente antes de descartá-lo como uma não solução. Se você não estiver interessado em um programador, crie um arquivo em lotes para executar a cada poucos minutos.
Thomas
Estou deixando minha solução para sua pergunta abaixo, para não perder tempo, caso meu entendimento da situação não seja completo.
Thomas
Mmmm. Desculpas, mas não acho que minha pergunta esteja sendo respondida por você. Eu precisava de ajuda para determinar qual computador mantinha o arquivo aberto. Estou realmente interessado em determinar o nome do computador. Todo o resto, embora interessante, não me diz a coisa finita que estou buscando.
RobW
2

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

Se o último ajudaria, há duas coisas que eu examinaria:

  • Verifique o antivírus instalado em seus clientes - eu vi vários antivírus do lado do cliente causarem um comportamento anômalo de bloqueio seriamente desagradável nos compartilhamentos.

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

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters EnableOplocks REG_DWORD 0 ou 1 Padrão: 1 (ativado)

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

No entanto, eu adoraria ver alguém responder à sua pergunta - é um problema interessante.

Helvick
fonte
Obrigado Helvick! Desativar o bloqueio oportunista é uma abordagem interessante. Servidor que eu assumo?
RobW
Sim, está no servidor - isso evita que os clientes solicitem o bloqueio oportunista para que possam armazenar em cache localmente (partes de) arquivos.
Helvick
O impacto no desempenho da desativação do bloqueio oportunista provavelmente seria inaceitável para nós. Precisamos analisar isso em nosso banco de testes.
RobW
Definitivamente, isso é um risco - eu estaria interessado no que você encontrar.
Helvick 03/02
2

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

Acredito que a solução que você está procurando será na configuração de diretivas de auditoria nesse sistema e na configuração desse arquivo para auditar qualquer acesso desse usuário específico. As etapas para executar isso podem variar dependendo da configuração da sua rede, por isso vou referir-lhe o link technet da microsoft sobre como configurar diferentes sistemas para auditoria.

http://technet.microsoft.com/en-us/library/cc787268(WS.10).aspx

Depois de configurar isso, certifique-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 começar.

Basta verificar seus logs de eventos de segurança no futuro e, apesar de listar cada sistema (como todos estão usando o mesmo nome de usuário), não deve ser difícil classificar e localizar qual sistema atualmente tem acesso de leitura e gravação ao arquivo.

Pode ser útil configurar o log de segurança para limpar a cada poucos 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 de usuário. Acredito que isso seja possível através do Console de Gerenciamento Microsoft.

Novamente, se você precisar de programação, não sou um empresário interessado em gastar muito do seu dinheiro em um pequeno programa. Eu forneço programação de qualidade a um preço que nem mesmo um indivíduo evitaria. Espero que isso ajude você a resolver seu problema.

Thomas
fonte
Obrigado por isso. Defina a auditoria nesse diretório logo após o problema inicial. Temos ~ 150 clientes (e não apenas quiosques) ativos nesse diretório. Como o problema é intermitente, a relação sinal / ruído era enorme, e eu não via uma maneira clara de vincular um computador específico a um evento de arquivo. Vou olhar para isso novamente. Já tivemos algumas reuniões de design sobre isso. Vários tópicos estão sobre a mesa, incluindo contas de logon. Eu ainda gostaria de saber o que computador está segurando um arquivo aberto :-)
RobW
1

Também atribuiria usuários diferentes a quiosques diferentes, se possível - isso poderia ajudá-lo a analisar outros logs ...

Se isso não for possível: Resumo da solução possível: Uma solução poderia ser executar uma ferramenta como o 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 com as quais você pode salvar os dados capturados em arquivo.

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

reiniero
fonte
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 haverá muitas pesquisas de host para executar.

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

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

Você pode ignorar com segurança quaisquer resultados que indiquem 'LISTENING' e também qualquer linha que mostre apenas endereços IP locais (por exemplo, 0.0.0.0 ou 127.0.0.1) ou o nome do 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 com 192.168.16.24 são de saída. Todas as outras conexões são conexões locais.

Bryan
fonte
Hmmm, basta reler sua pergunta e ela não resolve o problema, pois não informa qual arquivo o computador abriu.
Bryan
Sem problemas. Agradeço a ideia.
RobW
0

Lembro que havia uma ferramenta gráfica dentro do Windows para verificar compartilhamentos usados ​​e arquivos bloqueados.

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

petrus
fonte
0

Sei que isso é muito antigo, mas o ADSI fornece a interface WinNT: //, que permite acessar o serviço LANMANSERVER e consultar propriedades já expostas no snap-in mmc "Shared Folders". Atualmente, estou pesquisando uma maneira de vincular um host e um usuário a um arquivo aberto.

mbrownnyc
fonte
-1

Se fosse eu e eu tivesse acesso a uma máquina Linux na mesma sub-rede ... eu faria um tcpdump na porta de compartilhamento em questão para a caixa em que eles estão mantendo o arquivo aberto.

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

do linux ... Eu faria algo assim: tcpdump -ieth0 -s0 -X hostname port 1234 | grep -i "nameoffile"

Eu sei que a maior parte da carga útil é binária ... No entanto, eu apostaria um bom dinheiro que eles inicializem o cabeçalho para negociar autenticação para acesso ao arquivo em texto não criptografado.

Isso mostrará todos os hosts remotos que se conectam a essa caixa e onde o nome do arquivo é encontrado nos dados dos pacotes (se não forem criptografados ou binários).

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 a conexão for interrompida ou tiver conexões lentas.

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

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

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

++ Todd

Todd
fonte