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
Respostas:
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".
fonte
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 .
fonte
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.
fonte
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.
fonte
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.
fonte
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 ...
fonte
Que tal usar o comando netstat para determinar isso?
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
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:
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.
fonte
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".
fonte
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.
fonte
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
fonte