Как узнать, какой компьютер открыт в сетевой папке?

Окружающая среда:

Windows XP sp3, Сервер Windows 2003

Проблема:

У нас есть несколько десятков киосковных машин с одинаковым именем входа, которые иногда и ненадолго представляют файл на общем ресурсе. Скорость - это несколько блокировок и выпусков в минуту.

В последнее время мы столкнулись с одним из клиентов, который блокирует только файл, а затем не освобождает файл.

Мы можем закрыть файл, если это произойдет, но прошло несколько минут или больше, и это неприемлемый отключение.

Невыпущенная проблема блокировки произошла несколько раз за последний месяц. Я искал, какое устройство киоска отвечает за блокировку, и быстро обнаруживать его, когда это происходит.

Кажется, что есть пробел в информации, которую мы можем получить с сервера:

Мы можем видеть из различных инструментов:
-Какие файлы открыты и заблокированы. (много способов)
-Какой вход в систему имеет файл-файл, открытый или заблокированный. (много способов)
-Это конкретный компьютер, как правило, открыт для файла. (Общие папки, сеансы mmc)

Что мы не можем видеть, так это то, что на конкретном компьютере есть определенный файл, открытый и заблокированный.

Кто-нибудь знает, как это сделать?

Спасибо -

Rob

21 голос | спросил RobW 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 21:52:45 +0300000000pmWed, 03 Feb 2010 21:52:45 +030010 2010, 21:52:45

10 ответов


10

Проверьте этот небольшой бесплатный ресурс ( ShareWatch ), я думаю, он будет делать то, что вы «Ищите».

Одна из перечисленных функций: «Показывает пользователей и компьютеры, которые подключены к каждому ресурсу, а также открытые файлы».

alt text

ответил techie007 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 22:52:04 +0300000000pmWed, 03 Feb 2010 22:52:04 +030010 2010, 22:52:04
7

Введите командную строку (CMD),

затем введите: openfiles /query ip сетевой сети

И может потребоваться имя пользователя и пароль.

Вы можете получить дополнительную информацию об открытых файлах на странице здесь .

ответил sky100 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 22:19:12 +0300000000pmWed, 03 Feb 2010 22:19:12 +030010 2010, 22:19:12
5

Я считаю, что вы захотите вернуться к сообщению Sky100, поскольку он прав, а не в предоставлении вам того, что вы просили, но в предоставлении вам того, что вам нужно для решения вашей проблемы. Вам нужно будет ссылаться на заблокированный идентификационный номер с помощью команды «openfile /query /v» (verbose), поскольку она предоставит вам нужные вам данные. Найдите имя файла в указанном списке, данные покажут, какой элемент имеет чтение & запись включена, и вместе с ней будет указан конкретный идентификационный номер. Нет, вы не сможете найти, какая конкретная система заблокировала файл, но с предоставленными инструментами вы можете отключить этого пользователя от файла. Вот шаг за шагом, чтобы упростить мои промахи.

1) На файловом сервере с правами администратора сделайте Start> Выполнить> CMD [ENTER]

2) CD Desktop [ENTER] (вы увидите, почему скоро.)

3) openfiles /query /v> file.txt [ENTER] (Это создаст файл на рабочем столе со списком всех открытых файлов на сервере.)

4) Откройте файл .txt и найдите строку, содержащую имя вашего файла и разрешения на чтение и запись.

5) Обратите внимание на идентификационный номер этой строки и вернитесь на консоль управления.

6) openfiles /disconnect /ID [Введите идентификационный номер здесь] [ENTER]

До тех пор, пока у вас есть права администратора на файловом сервере, он отключит эту систему из файла и, предположив, что ваша система автоматизирована, должна позволять вещам продолжать двигаться по мере необходимости.

Литература: openfiles /query /? openfiles /disconnect /?

Если вам нужен сценарий или запрограммированное приложение, удовлетворяющее вашу систему, пожалуйста, не стесняйтесь комментировать, и я буду предоставлять контактную информацию, очень низкую цену вместе с технологией. поддержка моего приложения.

ответил sky100 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 22:19:12 +0300000000pmWed, 03 Feb 2010 22:19:12 +030010 2010, 22:19:12
2

Проблема, которую вы пытаетесь решить, которую вы заявляете (т. е. сопоставить конкретный клиентский компьютер (не пользователь) с заблокированным файлом), или это проблема с блокировкой, которую вам нужно решить?

Если последнее поможет, есть две вещи, на которые я бы посмотрел:

  • Проверьте AV, который установлен на ваши клиенты - я видел несколько Клиентская сторона AV вызывает серьезную неприятность аномальное поведение блокировки на акциях.

  • Попробуйте отключить оппортунистический блокировка , установив значение реестра EnableOpLocks равным 0.

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Параметры EnableOplocks REG_DWORD 0 или 1 По умолчанию: 1 (включено)

Это несколько снизит производительность, но ничего не сломает.

Мне бы хотелось, чтобы кто-то действительно ответил на ваш заявленный вопрос, хотя это интересная проблема.

ответил Helvick 3 FebruaryEurope/MoscowbWed, 03 Feb 2010 22:14:27 +0300000000pmWed, 03 Feb 2010 22:14:27 +030010 2010, 22:14:27
2

В попытке устранить проблему RobW и предоставить альтернативное решение я не смог ответить на его вопрос.

Я считаю, что решение, которое вы ищете, будет заключаться в настройке политик аудита в этой системе, а затем настройке этого файла для аудита любого доступа от этого конкретного пользователя. Действия по выполнению этого действия могут различаться в зависимости от настройки сети, поэтому я передам вам ссылку на технологию Microsoft по настройке различных систем для аудита.

http://technet.microsoft.com/ан-нас /библиотека /cc787268 (WS.10) .aspx

После установки этого параметра, убедившись, что вы выполните настройку определенного файла, который вы хотите отслеживать, добавив учетную запись пользователя в качестве аудитора, вы должны быть готовы к работе.

Просто проверьте свои журналы событий безопасности в будущем, и хотя он будет перечислять каждую систему (так как все они используют одно и то же имя пользователя), нетрудно будет отсортировать и определить, какая система в настоящее время имеет доступ на чтение и запись к файл.

Может быть полезно настроить журнал безопасности для очистки каждые несколько дней.

Если это не работает, вероятно, вам нужно будет настроить систему на каждое имя хоста, обращаясь к файлу, а не по имени пользователя. Я считаю, что это стало возможным благодаря консоли управления Microsoft.

Опять же, если вам нужно программирование, я не бизнесмен, заинтересованный в том, чтобы загружать ваши деньги за какую-то крошечную программу. Я предлагаю качественное программирование по цене, которую даже человек не уклонялся от нее. Надеюсь, это поможет вам в решении вашей проблемы.

ответил Thomas 18 FebruaryEurope/MoscowbThu, 18 Feb 2010 20:54:21 +0300000000pmThu, 18 Feb 2010 20:54:21 +030010 2010, 20:54:21
1

Я бы также назначил разных пользователей различным киоскам, если это было возможно - это могло бы помочь вам в анализе других журналов ...

Если это невозможно: Схема возможного решения: Решением может быть запуск такого инструмента, как sysinternals processmonitor, с соответствующим фильтром (к файлу, о котором идет речь) в киосках (не знаю, можете ли вы его скрыть). Есть несколько параметров командной строки, с которыми вы можете играть, чтобы сохранить захваченные данные в файл.

Соберите их из различных киосков, импортируйте их, например. Excel и найдите тот, который не был закрыт ...

ответил reiniero 28 J000000Thursday11 2011, 12:57:18
0

Как использовать команду netstat для определения этого?

netstat -an | find ":445"

Это должно указывать IP-адреса подключенных машин.

Если вам нужны имена хостов, а не IP-адреса, используйте

netstat -a | find "microsoft-ds"

однако это займет больше времени, особенно на загруженных файловых серверах или контроллерах домена, так как у него будет много хостов для выполнения.

Кроме того, имейте в виду, что в результате будут отображаться входящие, исходящие и незанятые порты прослушивания.

Входящие подключения будут показывать: 445 в левом столбце, исходящие показывают это в правом столбце.

Вы можете смело игнорировать любые результаты, которые указывают «LISTENING», а также любые строки, отображающие только локальные IP-адреса (например, 0.0.0.0 или 127.0.0.1) или собственное имя хоста компьютеров, если вы не используете параметр -n.

Например:

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            *:*

Единственным подключенным хостом здесь является 192.168.16.87. Соединения с 192.168.16.24 являются исходящими. Все остальные соединения являются локальными.

ответил Bryan 18 FebruaryEurope/MoscowbThu, 18 Feb 2010 21:13:40 +0300000000pmThu, 18 Feb 2010 21:13:40 +030010 2010, 21:13:40
0

Я помню, что в окнах был графический инструмент для проверки используемых долей и заблокированных файлов.

Это должно быть в «системных инструментах» в разделе «Управление компьютером» (~ переведено с французского ...) под названием «общие папки».

ответил petrus 13 J000000Tuesday10 2010, 03:43:32
0

Я знаю, что это очень старый, но ADSI предоставляет интерфейс WinNT: //, который позволяет вам получить доступ к сервису LANMANSERVER и запросить свойства, уже выставленные в snapin «Shared Folders». В настоящее время я изучаю способ привязки пользователя и к открытому файлу.

ответил mbrownnyc 3 +04002011-10-03T22:58:40+04:00312011bEurope/MoscowMon, 03 Oct 2011 22:58:40 +0400 2011, 22:58:40
-1

Если бы это был я, и у меня был доступ к Linux-машине в той же подсети ... Я бы сделал tcpdump в соответствующем порте share в поле, в котором они хранят файл.

Если у вас нет unix, вы все равно можете использовать tcpdump, но вы должны установить его.

из linux ... Я бы сделал что-то вроде этого: tcpdump -ieth0 -s0 -X hostname port 1234 | grep -i "nameoffile"

Я знаю, что большая часть полезной нагрузки двоичная ... Однако я бы поставил хорошие деньги, чтобы исходный заголовок для согласования аутентификации для доступа к файлу был в ясном тексте.

Это покажет вам все удаленные конечные узлы, которые подключаются к этому полю, и где имя файла находится в их пакетных данных (если они не зашифрованы или в двоичном виде). ​​

Удачи! Но из моего опыта следует использовать следующее:

1) Общие файлы - плохая идея! Особенно с удаленными системами, которые могут оставить файл заблокированным, если они отключают соединение или имеют медленные соединения.

2) Доступ к общему файлу вызовет условие гонки между клиентами. Тратить драгоценное время тика.

3) Если вы ДОЛЖНЫ использовать общий файл ... Создавайте разные имена пользователей для каждого удаленного сайта, чтобы вы могли правильно отлаживать.

Лучший сценарий ... избавиться от файла и слить его в SQL или создать веб-сервис, который позволяет клиентам получать доступ к файлу или данным.

++ Todd

ответил Todd 16 Jpm1000000pmWed, 16 Jan 2013 23:18:23 +040013 2013, 23:18:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132