Як сказати, на якому комп’ютері відкритий файл у мережі?


21

Середовище:

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

Проблема:

У нас є кілька десятків машин з кіосками, кожна з тим самим ім'ям для входу, які час від часу та коротко подають файл на загальну долю. Швидкість - кілька блокувань і відпускає хвилину.

Нещодавно ми пережили, як один із клієнтів виключно блокує файл, а потім не випускає файл. 

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

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

Здається, що в інформації, яку ми можемо отримати від сервера, є розрив:

Ми можемо бачити з різних інструментів:
-Які файли відкриті та заблоковані. (багато способів)
-Який при вході файл специфіку відкритий або заблокований. (багато способів)
-На певному комп'ютері загалом відкритий файл. (Спільні папки, сеанси mmc)

Те, що ми не можемо побачити, - це те, що на певному комп'ютері відкритий і заблокований певний файл.

Хтось знає спосіб досягти цього?

Спасибі -

Роб


1
Не зовсім те, про що ви запитуєте, але альтернативним підходом було б створення окремого облікового запису для кожної системи.
Брайан

Відповіді:


10

Ознайомтеся з цим маленьким безкоштовним утилітом ( ShareWatch ), я думаю, він зробить те, що ви шукаєте.

Одна з перерахованих функцій: "Показує користувачів та комп’ютери, які підключені до кожної спільної інформації, а також файли, які відкриті."

alt текст


1
Дякую за це - я спробував Sharewatch. У моїй ситуації - більше десятка клієнтів з однаковими іменами для входу - вони поєднують відкриті файли та робочі станції в одному списку. Ви не можете сказати, яка робоча станція відкрита. Крім того, вибір властивостей просто повідомляє, що на робочій станції відкриті файли x, а не їхні файли. Вибір властивостей для файлу дає подібну інформацію.
RobW

7

Введіть командний рядок (CMD),

потім введіть: openfiles / query ip мережевого доступу

І ім’я користувача, і пароль можуть знадобитися.

Ви можете отримати більше інформації про відкриті файли тут .


Спасибі. Openfiles дає в значній мірі такий же вихід, як і чистий сеанс з консолі сервера. Він не дає імені комп'ютера, хто відкрив файл. Я шукаю файл-> підключення до комп'ютера, а не файл-> з'єднання користувача.
RobW

5

Я вважаю, що ви захочете посилатися на повідомлення Sky100, як він правдивий, не в наданні вам того, що ви просили, а в наданні вам того, що вам потрібно для вирішення вашої проблеми. Вам потрібно буде посилатися на заблокований ідентифікаційний номер за допомогою команди "openfile / query / v" (verbose), оскільки він надасть вам потрібні вам дані. Шукаючи ім’я файлу в наведеному списку, дані покажуть, який елемент увімкнено для читання та запису, а разом із ним надасть конкретний ідентифікаційний номер. Ні, можливо, ви не зможете знайти, у якій конкретній системі заблокований файл, але за допомогою наданих інструментів ви можете відключити цього користувача від файлу. Ось крок за кроком, щоб спростити мої міркування.

1) На файловому сервері з правами адміністратора зробіть Пуск> Запуск> CMD [ENTER]

2) Настільний компакт-диск [ENTER] (Ви побачите, чому незабаром.)

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

4) Відкрийте файл file.txt та знайдіть рядок, що містить і ваше ім'я файлу, і дозволи "Читати + записувати".

5) Відмітьте ідентифікаційний номер у цьому рядку та поверніться до своєї консолі Command.

6) відкриті файли / відключення / ідентифікатор [Поставте сюди ідентифікаційний номер] [Вхід]

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

Посилання: openfiles / query /? openfiles / відключити /?

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


Га! Моя проблема полягала в тому, щоб знайти комп'ютер, з якого був відкритий файл. Чи є у вас ідеї, як це зробити? Ідентифікувати та закрити файл досить просто, і існує маса способів спроектувати цей результат. Я вдячний за відповідь, і ваша комерційна пропозиція подарувала мені
посмішку

Вибачте, я не знав, що процес відкритих файлів не є рішенням. З того, що ви описали, здається, що це вирішило б вашу проблему ще більше переглянути систему, оскільки вона не закриває файл, а просто видаляє це заблоковане налаштування. Насправді я створив додаток для своєї компанії, і він може автоматизуватися, щоб запускати кожну дрібницю, щоб уникнути таких ускладнень. Я здогадуюсь це, окрім суті. Щоб відповісти на ваше пряме запитання: Так, повинен бути спосіб перевірити ці системи для їх доступу до цього файлу. Будь ласка, дивіться моє наступне повідомлення для більш детальної інформації.
Томас

Насправді, повертаючись назад і перечитуючи вашу публікацію ... "Ми можемо закрити файл, коли це станеться, але минуло кілька хвилин або довше, і це неприйнятний вихід з ладу". Причина вашого рішення не працює в тому, що ви ЗАКРИТИ файл. Раніше моє та частково рішення Sky100, що надається раніше, не закриває файл, але змінює права доступу лише до читання. Знову ж таки, я розгублений, як відкриті файли НЕ є рішенням, яке ви шукаєте. Дайте йому зняти, перш ніж списати це як нерозв’язане рішення. Якщо програміст не зацікавлений, створіть пакетний файл, який запускається кожні кілька хвилин.
Томас

Я залишаю своє рішення вашого питання нижче, щоб не витрачати час на випадок, якщо моє розуміння ситуації не є ретельним.
Томас

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

2

Це проблема, яку ви намагаєтеся вирішити, яку ви вказали (наприклад, зіставити конкретний клієнтський комп'ютер (а не користувач) на заблокований файл) чи це проблема з блокуванням, яку потрібно вирішити?

Якщо останнє допоможе, то я би роздивився дві речі:

  • Перевірте AV-файл, встановлений на ваших клієнтах - я бачив, що декілька АВ-клієнтів на стороні клієнта спричиняють серйозно неприємну аномальну поведінку блокування на акціях.

  • Спробуйте відключити опортуністичне блокування , встановивши значення реєстру EnableOpLocks на 0.

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Параметри EnableOplocks REG_DWORD 0 або 1 За замовчуванням: 1 (увімкнено)

Це дещо знизить продуктивність, але нічого не повинно порушувати.

Мені б хотілося, щоб хтось насправді відповідав на ваше заявлене запитання - це цікава проблема.


Дякую Гельвіку! Відключення опортуністичного блокування - цікавий підхід. Сервер я припускаю?
RobW

Так, це на сервері - це не дозволяє клієнтам вимагати умовно-умовного блокування, щоб вони могли локально кешувати (частини) файлів.
Helvick

Показ спектаклю від вимкнення умовно-умовного блокування був би для нас, швидше за все, неприйнятний. Нам потрібно буде розглянути це на нашому тестовому двірці.
RobW

Це, безумовно, ризик з цим - мені було б цікаво, що ви знайдете.
Гельвік

2

У своїй спробі усунути проблему RobW та запропонувати альтернативне рішення, я не зміг відповісти на його запитання.

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

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

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

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

Може бути корисним налаштувати журнал безпеки для очищення кожні кілька днів.

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

Знову ж таки, якщо вам потрібно програмування, я не бізнесмен, зацікавлений брати ваші гроші за якісь крихітні програми. Я пропоную якісне програмування ціною, якої навіть людина не цурається. Я сподіваюся, що це допоможе вам вирішити своє питання.


Дякую за це Я встановив аудит у цьому каталозі незабаром після початкового випуску. У цьому каталозі активне ~ 150 клієнтів (а не лише кіоски). Оскільки проблема переривчаста, співвідношення сигнал / шум було величезним, і я не бачив чіткого способу зв’язку конкретного комп'ютера з файловою подією. Я ще раз перегляну це. Ми вже провели кілька дизайнерських зустрічей. На столі є кілька тем, включаючи акаунти для входу. Я все ще хотів би знати, на якому комп’ютері зберігається відкритий файл :-)
RobW

1

Я також призначив різним користувачам різні кіоски, якщо це можливо - це може допомогти вам в аналізі інших журналів ...

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

Зберіть їх з різних кіосків, імпортуйте їх у напр. Excel та шукайте той, який не було закрито ...


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 є вихідними. Всі інші з'єднання - це локальні з'єднання.


Хм-м-м, просто перечитайте своє запитання, і це не зовсім вирішує вашу проблему, оскільки не говорить про те, який файл відкрив комп'ютер.
Брайан

Без проблем. Я ціную цю ідею.
RobW

0

Я пам’ятаю, що в Windows був графічний інструмент для перевірки використаних акцій та заблокованих файлів.

Це має бути в "системних інструментах" у розділі "Управління комп'ютером" (~ перекладено з французької ...), під назвою "спільні папки".


0

Я знаю, що це дуже давно, але ADSI надає інтерфейс WinNT: //, який дозволяє отримати доступ до послуги LANMANSERVER та запитувати властивості, вже викриті в оснастці mmc «Спільні папки». Зараз я досліджую спосіб зв’язати хост і користувача з відкритим файлом.


-1

Якби це я, і я мав доступ до машини Linux у тій самій підмережі ... Я би зробив tcpdump на порті спільного доступу до питання, у якому вони тримають файл відкритим.

Якщо у вас немає Unix, ви все одно можете використовувати tcpdump, але вам доведеться його встановити.

від Linux ... я б зробив щось подібне: tcpdump -ieth0 -s0 -X порт імені хоста 1234 | grep -i "nameoffile"

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

Це покаже вам кожен хост далекого кінця, який підключається до цього вікна і де ім'я файлу знайдено в їх пакетних даних (якщо вони не зашифровані або у двійковій).

Удачі! Але з мого досвіду слід використовувати наступне:

1) Спільні файли - погана ідея! Особливо з віддаленими системами, які можуть залишити файл заблокованим, якщо вони перестають з’єднуватись або мають повільне з'єднання.

2) Доступ до спільного файлу спричинить перегони між клієнтами. Витрачає цінний час кліща.

3) Якщо ОБОВ'ЯЗКОВО використовувати спільний файл ... Створіть різні імена користувачів для кожного віддаленого сайту, щоб ви могли належним чином налагоджувати.

Найкращий сценарій ... позбудьтесь файлу та об'єднайтеся в SQL або створіть веб-сервіс, який дозволяє клієнтам отримати доступ до файлу чи даних.

++ Тодд

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.