Мне нужно получить IP-адрес клиента от определенного соединения от proftpd в Linux (где я знаю pid). Я искал в каталоге / proc /, но не смог получить никакой информации об IP.
Кто-нибудь знает способ, как получить или где найти эту информацию?
p.s. извините, но я забыл упомянуть, что все это должно происходить изнутри реализации FUSE, поэтому можно ли получить эту информацию без использования внешней программы или, возможно, есть библиотека, которая могла бы помочь мне в этом?
Попробуйте netstat -tnp
, он покажет все TCP-соединения + IP + PID процесса, стоящего за этим соединением. Вы также должны найти IP-адрес клиента в файлах журнала Proftpd.
Проверить fuser
инструмент. Это позволяет идентифицировать файлы и сокеты, открытые процессом. Это должно быть хорошей отправной точкой.
Как вы позже добавили, вы хотите сделать это из программы на языке C, чтобы напрямую спросить Proftpd. Просто установите свой экземпляр Proftpd, чтобы он сохранял файл табло. Затем вы можете проанализировать этот файл напрямую (что сделало вас в зависимости от формата внутреннего файла Proftpd) или вы можете проанализировать вывод команды ftpwho -v -o oneline
это команда Proftpd, использующая файл табло для вывода различной информации о подключенных пользователях.