Wer hat Dateien auf einem Linux-Server geöffnet

1096
Robert

Ich habe häufig die Aufgabe, herauszufinden, wer auf unserem Linux-Dateiserver (Ubuntu) in unserer Windows-Umgebung geöffnet hat.

Wir verwenden Samba im Netzwerk und ich verwende Putty von meiner Workstation aus, um ein Shell-Fenster zum Ausführen von Bash-Skripten einzurichten.

Ich habe so etwas verwendet, um herauszufinden, welche Dateien geöffnet sind: (dies gibt eine Liste von Prozess-IDs mit jeder geöffneten Datei zurück)

Robert:$ sudo lsof | grep "/srv/office/some/folder" 

Dann folge ich so etwas, um zu zeigen, wem der Prozess gehört: (dies gibt den Namen des Rechners im Netzwerk zurück, der das IP4-Protokoll verwendet, dem der Prozess gehört).

Robert:$ sudo lsof -p 27295 | grep "IPv4" 

Jetzt kenne ich den Windows-Client, der eine Datei geöffnet hat und von dort aus Maßnahmen ergreifen kann.

Wie Sie sehen, ist dies nicht schwierig, aber zeitraubend. Ich würde es vorziehen, eine Windows-Anwendung zu haben, die ich ausführen kann, die mir nur das gibt, was ich will.

Ich habe also überlegt, einen Prozess zu erstellen, den ich unter Linux ausführen kann, der einen Port abhört und dann eine saubere Liste aller geöffneten Dateien mit der IP-Adresse des Hosts zurückgibt, der die Datei geöffnet hat. Dann eine kleine Windows-Clientanwendung, die die Anforderung an den Port senden kann.

Es scheint, dass dies ein sehr häufiges Bedürfnis sein sollte, aber ich kann nichts dergleichen finden, das zuvor gemacht wurde.

Irgendwelche Vorschläge?

2
Haben Sie darüber nachgedacht, ein kleines Bash-Skript dafür zu schreiben? digitxp vor 9 Jahren 0
http://serverfault.com/questions/118385/wie- genau-do-i-find-the-a-specific-samba-users-process-id-so-that-i-can-kill Kevin Panko vor 9 Jahren 0

1 Antwort auf die Frage

0
Kamil

I. Wenn Sie diese Aufgabe nur auf einem Computer erledigen müssen, würde ich dies folgendermaßen tun:

  1. Erstellen Sie ein Linux-Konto für solche Aufgaben (beispielsweise "Sambaadmin"), um die Sicherheit zu erhöhen
  2. Konfigurieren Sie putty für die automatische Anmeldung für dieses Konto
  3. Schreiben Sie Ihr Skript, das Ihre Admin-Aufgaben erledigt ( /home/sambaadmin/see_clients.shzum Beispiel). Ich würde deine Aufgaben so machen:

    smbstatus -p read -p "Drücken Sie die Eingabetaste, um den Vorgang zu beenden ..." zu beenden

  4. Fügen Sie ihm Ausführungsberechtigungen hinzu ( chmod +x /home/sambaadmin/see_clients.sh)

  5. Rufen Sie dieses Skript am Ende der Datei /home/sambaadmin/.bash_profile auf. .bash_profile wird nach der Benutzeranmeldung automatisch ausgeführt.

  6. Erstellen Sie auf Ihrem Windows-Desktop einen Kitt-Shoutcut für diese automatische Anmeldesitzung

Nachdem Sie das getan haben - Ihr Shourtuc öffnet Putty, loggt sich ein, Ihr "Admin-Task-Skript" wird ausgeführt, Sie werden es im Putty-Fenster sehen und nach Drücken der Eingabetaste wird die Sitzung beendet.

II. Wenn Sie viele Computer im Unternehmen verwenden, schreiben Sie einfache Webanwendungen in Python oder verwenden Sie eine Server-Verwaltungssoftware (z. B. Webmin).

III. Sie können cron verwenden, um jedes Minute oder zwei Skript wie folgt auszuführen:

smbstatus -p > /somewhere/sambashare/openfiles.txt 

Sie können eine Verknüpfung zu dieser Datei in Windows erstellen und sie einfach öffnen, um zu sehen, was los ist.

\\sambaserver\sambashare\openfiles.txt