2

У меня довольно распространенная задача выяснить, у кого файлы открыты на нашем файловом сервере Linux (Ubuntu) в нашей среде Windows.

Мы используем Samba в сети, а я использую Putty со своей рабочей станции, чтобы установить окно оболочки для запуска сценариев bash.

Я использовал что-то вроде этого, чтобы найти, какие файлы открыты: (это возвращает список идентификаторов процессов с каждым открытым файлом)

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

Затем я проверяю что-то вроде этого, чтобы показать, кому принадлежит процесс: (при этом возвращается имя машины в сети с использованием протокола IP4, которому принадлежит процесс)

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

Теперь я знаю Windows-клиент, у которого есть открытый файл, и который может принять меры оттуда.

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

Итак, я думал о создании какого-либо процесса, который я могу запустить в Linux, который прослушивает порт, а затем возвращает чистый список всех открытых файлов с IP-адресом хоста, у которого этот файл открыт. Затем небольшое клиентское приложение Windows, которое может отправить запрос на порт.

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

Какие-либо предложения?

1 ответ1

0

I. Если вам нужно выполнить эту задачу только на одном компьютере - я бы сделал это следующим образом:

  1. Создайте учетную запись linux для таких задач (например, "sambaadmin") для большей безопасности.
  2. Настроить замазку для автоматического входа в систему на этом аккаунте
  3. Напишите свой сценарий, который выполняет ваши задачи администратора (например, /home/sambaadmin/see_clients.sh). Я бы сделал ваши задачи следующим образом:

    smbstatus -p read -p «Нажмите [Enter] для выхода ...» выход

  4. Добавьте к нему разрешения на выполнение (chmod +x /home/sambaadmin/see_clients.sh)

  5. Вызовите этот скрипт в конце файла /home/sambaadmin/.bash_profile. .bash_profile автоматически выполняется после входа пользователя.

  6. Создайте шпатлевку на рабочем столе Windows для этого сеанса автоматического входа

После того, как вы это сделаете - ваш shourtuc откроет putty, войдите в систему, ваш «скрипт задачи администратора» будет выполнен, вы увидите его в окне putty и после нажатия Enter - сессия закончится.

II. Если вы используете много компьютеров в компании - напишите простое веб-приложение на python или используйте какое-либо программное обеспечение для веб-управления сервером (например, Webmin).

III. Вы можете использовать cron для выполнения каждой минуты или двух скриптов следующим образом:

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

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

\\sambaserver\sambashare\openfiles.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .