Frage Wie kann ich feststellen, auf welchem ​​Computer eine Datei in einer Netzwerkfreigabe geöffnet ist?


Umgebung:

Windows XP SP3, Windows 2003 Server

Problem:

Wir haben mehrere Dutzend Kiosk-Maschinen mit jeweils demselben Anmeldenamen, die gelegentlich und kurz eine Datei auf einer Freigabe haben. Die Rate beträgt mehrere Sperren und gibt eine Minute frei.

Kürzlich haben wir erlebt, dass einer der Clients eine Datei exklusiv sperrte und dann die Datei nicht freigab.

Wir können die Datei schließen, wenn dies geschieht, aber einige Minuten oder länger verstreichen, und dies ist ein inakzeptabler Ausfall.

Das nicht freigegebene Sperrproblem ist im letzten Monat mehrmals aufgetreten. Ich habe nach dem Kiosk-Gerät gesucht, das für das Sperren verantwortlich ist, und es schnell zu erkennen, wenn es passiert.

Es scheint eine Lücke in den Informationen zu geben, die wir vom Server bekommen können:

Wir können von verschiedenen Werkzeugen sehen:
-Was Dateien geöffnet und gesperrt sind. (viele Möglichkeiten)
- Welche Anmeldung hat eine bestimmte Datei geöffnet oder gesperrt. (viele Möglichkeiten)
- Dass ein bestimmter Computer im Allgemeinen eine Datei geöffnet hat. (Freigegebene Ordner, Sitzungen mmc)

Was wir nicht sehen können ist, dass ein bestimmter Computer eine bestimmte Datei geöffnet und gesperrt hat.

Wer kennt einen Weg dahin?

Vielen Dank -

rauben


21
2018-02-03 18:52


Ursprung


Nicht ganz das, was Sie fragen, aber ein alternativer Ansatz wäre es, für jedes System einen eigenen Account zu erstellen. - Bryan


Antworten:


Schau dir dieses kleine Freeware-Util (ShareWatch), Ich denke, es wird tun, wonach du suchst.

Eine der aufgeführten Funktionen: "Zeigt die Benutzer und Computer an, die mit jeder Freigabe verbunden sind, und zeigt an, welche Dateien geöffnet sind."

alt text


10
2018-02-03 19:52



Danke dafür - ich habe versucht, Sharewatch. In meiner Situation - mehr als ein Dutzend Clients mit den gleichen Login-Namen - kombiniert es die offenen Dateien und Workstations in der gleichen Liste. Sie können nicht feststellen, auf welchem ​​Arbeitsplatz es geöffnet ist. Wenn Sie Eigenschaften wählen, wird einfach gemeldet, dass auf einer Workstation x-Dateien geöffnet sind und nicht deren Dateinamen. Wenn Sie Eigenschaften für die Datei auswählen, werden ähnliche Informationen angezeigt. - RobW


Geben Sie die Befehlszeile (CMD) ein,

dann tippe: Openfiles / Abfrage IP des Netzwerkes 

Und der Benutzername und das Passwort sind möglicherweise erforderlich.

Sie können mehr Informationen über openfiles erhalten Hier.


7
2018-02-03 19:19



Vielen Dank. Openfiles gibt weitgehend die gleiche Ausgabe wie net Sitzung von der Serverkonsole aus. Es gibt dem Computernamen nicht, wer die Datei geöffnet hat. Ich suche eine Datei-> Computerverbindung, keine Datei-> Benutzerverbindung. - RobW


Ich glaube, Sie werden auf den Beitrag von Sky100 zurückkommen, da er Recht hat und Ihnen nicht das zur Verfügung stellt, was Sie gefragt haben, sondern Sie mit dem zu versorgen, was Sie zur Lösung Ihres Problems benötigen. Sie müssen über den Befehl "openfile / query / v" (verbose) auf die gesperrte ID-Nummer verweisen, da sie Ihnen die Daten liefert, die Sie benötigen. Suchen Sie nach dem Dateinamen in der angegebenen Liste, die Daten zeigen an, für welches Element Lese- und Schreibzugriff aktiviert ist, und geben gleichzeitig eine spezifische ID-Nummer an. Nein, möglicherweise können Sie nicht herausfinden, welches bestimmte System die Datei gesperrt hat. Mit den bereitgestellten Tools können Sie diesen Benutzer jedoch von der Datei trennen. Hier ist eine Schritt-für-Schritt-Anleitung, um mein Geschwafel zu vereinfachen.

1) Auf dem Fileserver mit Administratorrechten, Start> Ausführen> CMD [ENTER]

2) CD-Desktop [ENTER] (Sie werden sehen, warum bald.)

3) openfiles / query / v> file.txt [ENTER] (Dies erstellt eine Datei auf dem Desktop mit einer Liste aller geöffneten Dateien auf dem Server.)

4) Öffnen Sie die Datei.txt und suchen Sie nach der Zeile, die sowohl Ihren Dateinamen als auch die Lese- und Schreibberechtigungen enthält.

5) Notiere die ID-Nummer in dieser Zeile und gehe zurück zu deiner Command-Konsole.

6) openfiles / disconnect / ID [ID-Nummer hier eingeben] [ENTER]

Solange Sie über Administratorrechte für den Dateiserver verfügen, wird das System von der Datei getrennt. Wenn Ihr System automatisiert ist, sollten die Dinge bei Bedarf weiterlaufen.

Verweise: openfiles / Abfrage /? openfiles / trennen /?

Wenn Sie ein Skript oder eine programmierte Anwendung für Ihr System benötigen, zögern Sie nicht, zu kommentieren und ich werde mit Kontaktinformationen, einen sehr niedrigen Preis zusammen mit Tech zur Verfügung stellen. Unterstützung bei meiner Bewerbung


5
2018-02-03 19:14



Ha! Mein Problem war, den Computer zu finden, von dem die Datei geöffnet wurde. Hast du irgendwelche Ideen, wie das geht? Das Identifizieren und das Schließen der Datei ist einfach und es gibt viele Möglichkeiten, dieses Ergebnis zu erstellen. Ich schätze die Antwort, und Ihr kommerzielles Angebot gab mir einen frühen Morgen kichern ;-) - RobW
Ich entschuldige mich, mir war nicht bewusst, dass der Openfiles-Prozess nicht die Lösung war. Nach dem, was Sie beschrieben haben, scheint es, als hätten Sie das System nicht weiter untersucht, da es die Datei nicht schließt, sondern nur diese gesperrte Einstellung entfernt. In der Tat, ich habe die Anwendung für mein Unternehmen gebaut und es kann automatisiert werden, um jedes bisschen zu laufen, um solche Komplikationen zu vermeiden. Ich denke, das ist nebensächlich. Um Ihre direkte Frage zu beantworten: Ja, es sollte eine Möglichkeit geben, diese Systeme auf ihren Zugriff auf diese Datei zu überprüfen. Bitte sehen Sie meinen nächsten Beitrag für weitere Details. - Thomas
Tatsächlich, gehen Sie zurück und lesen Sie Ihren Beitrag erneut ... "Wir können die Datei schließen, wenn dies passiert, aber einige Minuten oder länger verstreichen, und dies ist ein inakzeptabler Ausfall." Der Grund, warum Ihre Lösung nicht funktioniert, ist, dass Sie die Datei schließen. Meine und teilweise die Sky100-Lösung, die zuvor bereitgestellt wurde, schließt die Datei nicht, sondern ändert die Zugriffsrechte auf Nur lesen. Wiederum bin ich verwirrt darüber, wie openfiles NICHT die Lösung ist, nach der Sie suchen. Geben Sie es eine Chance, bevor Sie es als eine Nichtlösung abschreiben. Wenn Sie nicht an einem Programmierer interessiert sind, erstellen Sie eine Batchdatei, die alle paar Minuten ausgeführt wird. - Thomas
Ich lasse meine Lösung auf Ihre Frage unten, um keine Zeit zu verschwenden, falls mein Verständnis der Situation nicht gründlich ist. - Thomas
Mmmm. Entschuldigung, aber ich fühle nicht, dass meine Frage von Ihnen angesprochen wird. Ich brauchte Hilfe, um zu bestimmen, was Computer hielt die Datei offen. Ich bin wirklich daran interessiert, den Computernamen zu bestimmen. Der ganze Rest, obwohl interessant, erzählt mir nicht das endliche Ding, nach dem ich suche. - RobW


Ist das Problem, das Sie versuchen, das zu lösen, das Sie angeben (dh den bestimmten Clientcomputer (nicht den Benutzer) der gesperrten Datei zuzuordnen), oder gibt es ein Sperrproblem, das Sie beheben müssen?

Wenn Letzteres helfen würde, dann gäbe es zwei Dinge, die ich mir ansehen würde:

  • Überprüfen Sie das AV, auf dem installiert ist Ihre Kunden - ich habe mehrere gesehen Client-seitig AV verursachen ernsthaft böse anomoles Sperrverhalten auf Aktien.

  • Versuche es zu deaktivieren opportunistisch Verriegelung Setzen Sie den Registrierungswert EnableOpLocks auf 0.

    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Dienste \ LanManServer \ Parameters EnableOplocks REG_DWORD 0 oder 1 Standard: 1 (aktiviert)

Dies wird die Leistung etwas reduzieren, sollte aber nichts brechen.

Ich würde gerne sehen, dass jemand tatsächlich Ihre Frage beantwortet - es ist ein interessantes Problem.


2
2018-02-18 17:54



Danke Helvick! Die Deaktivierung von opportunistischem Sperren ist ein interessanter Ansatz. Server nehme ich an? - RobW
Ja, es ist auf dem Server - dies verhindert, dass Clients opportunistische Sperren anfordern, damit sie Dateien lokal zwischenspeichern können. - Helvick
Der Leistungseinbruch durch die Deaktivierung von opportunistischem Sperren wäre höchstwahrscheinlich für uns nicht akzeptabel. Wir müssen uns das in unserem Testbed ansehen. - RobW
Das ist definitiv ein Risiko - ich würde mich für das interessieren, was Sie finden. - Helvick


Bei meinem Versuch, RobWs Problem zu lösen und eine alternative Lösung bereitzustellen, habe ich seine Frage nicht beantwortet.

Ich glaube, die Lösung, nach der Sie suchen, besteht darin, Audit-Richtlinien für dieses System einzurichten und diese Datei dann so einzurichten, dass jeder Zugriff von diesem bestimmten Benutzer überprüft wird. Die Schritte zur Durchführung dieser Schritte können je nach Netzwerkkonfiguration unterschiedlich sein. Daher verweise ich Sie auf den TechNet-Link von Microsoft, in dem erläutert wird, wie verschiedene zu prüfende Systeme eingerichtet werden.

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

Nachdem Sie diese Einstellung vorgenommen haben und sicherstellen möchten, dass Sie die spezifische Datei, die Sie überwachen möchten, einrichten, indem Sie das Benutzerkonto als Auditor hinzufügen, sollten Sie bereit sein.

Überprüfen Sie einfach Ihre Sicherheitsereignisprotokolle in der Zukunft und obwohl es jedes System auflistet (da sie alle denselben Benutzernamen verwenden), sollte es nicht schwierig sein zu sortieren und zu lokalisieren, welches System derzeit Lese- und Schreibzugriff auf die Datei hat.

Es kann nützlich sein, das Sicherheitsprotokoll so einzurichten, dass es alle paar Tage gelöscht wird.

Wenn dies nicht funktioniert, müssen Sie das System wahrscheinlich für jeden Hostnamen einrichten, der auf die Datei zugreift, und nicht auf den Benutzernamen. Ich glaube, dies wird über die Microsoft Management Console ermöglicht.

Noch einmal, wenn Sie programmieren müssen, bin ich kein Geschäftsmann, der daran interessiert ist, eine Menge Geld für ein kleines Programm zu nehmen. Ich biete qualitativ hochwertige Programmierung zu einem Preis, vor dem selbst ein Individuum nicht zurückschrecken würde. Ich hoffe, dies hilft Ihnen bei der Lösung Ihres Problems.


2
2017-07-28 08:57



Danke dafür. Ich setze das Auditing kurz nach der ersten Ausgabe auf dieses Verzeichnis. Wir haben ~ 150 Clients (und nicht nur Kiosks) in diesem Verzeichnis aktiv. Da das Problem intermittierend ist, war das Signal-Rausch-Verhältnis sehr groß, und ich sah keinen klaren Weg, einen bestimmten Computer mit einem Dateiereignis zu verbinden. Ich werde es mir nochmal ansehen. Wir hatten bereits einige Design-Meetings. Mehrere Themen sind auf dem Tisch, einschließlich Anmeldekonten. Ich würde immer noch gerne wissen, welcher Computer eine Datei offen hält :-) - RobW


Ich würde auch, wenn möglich, verschiedene Benutzer verschiedenen Kiosks zuweisen - es könnte Ihnen bei der Analyse anderer Protokolle helfen ...

Wenn das nicht möglich ist: Überblick über die mögliche Lösung: Eine Lösung könnte sein, ein Tool wie sysinternals processmonitor mit einem geeigneten Filter (auf die fragliche Datei) auf den Kiosks laufen zu lassen (weiß nicht, ob Sie es verstecken können). Es gibt einige Befehlszeilenoptionen, mit denen Sie die erfassten Daten in einer Datei speichern können.

Sammeln Sie diese von den verschiedenen Kiosken, importieren Sie sie in z.B. Excel und suchen Sie nach dem, der nicht geschlossen wurde ...


1
2018-02-18 18:13





Was ist mit dem Befehl netstat, um dies zu bestimmen?

netstat -an | find ":445"

Dies sollte Ihnen die IP-Adressen der angeschlossenen Maschinen geben.

Wenn Sie die Hostnamen anstelle von IP-Adressen verwenden möchten, verwenden Sie

netstat -a | find "microsoft-ds"

Dies dauert jedoch länger, insbesondere bei ausgelasteten Dateiservern oder Domänencontrollern, da hier viele Host-Lookups ausgeführt werden müssen.

Bedenken Sie auch, dass die Ergebnisse eingehende, ausgehende und nicht aktive Überwachungsports anzeigen.

Eingehende Verbindungen zeigen das: 445 in der linken Spalte, Outbound zeigen es in der rechten Spalte an.

Sie können alle Ergebnisse, die "LISTENING" enthalten, und alle Zeilen, die nur lokale IP-Adressen (z. B. 0.0.0.0 oder 127.0.0.1) anzeigen, oder den Hostnamen des Computers ignorieren, wenn Sie die Option -n nicht verwenden.

Zum Beispiel:

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

Der einzige verbundene Host hier ist 192.168.16.87. Die Verbindungen zu 192.168.16.24 sind Outbound. Alle anderen Verbindungen sind lokale Verbindungen.


0
2017-07-12 23:43



Hmmm, lesen Sie Ihre Frage einfach noch einmal, und es löst Ihr Problem nicht ganz, da es Ihnen nicht sagt, welche Datei der Computer geöffnet hat. - Bryan
Kein Problem. Ich schätze die Idee. - RobW