У меня довольно распространенная задача выяснить, у кого файлы открыты на нашем файловом сервере 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, которое может отправить запрос на порт.
Кажется, что это должно быть очень распространенной потребностью, но я не могу найти ничего подобного, что было сделано раньше.
Какие-либо предложения?