我需要从 Linux 上的 proftpd 获取特定连接的客户端 IP(我知道 pid)。我在 /proc/ 目录中搜索过,但无法获取有关 IP 的任何信息。
有人知道如何获取或在哪里找到这些信息吗?
ps 抱歉,但我忘了提到所有这些都应该在 FUSE 实现内部发生,因此是否可以在不使用外部程序的情况下获取该信息,或者是否有一个库可以帮助我做到这一点?
答案1
正如您后来补充说,您想从 C 程序中执行此操作,则可以直接询问 Proftpd。只需设置您的 Proftpd 实例,这样它就可以保存记分牌文件。然后您可以直接解析该文件(这使您依赖于 Proftpd 的内部文件的格式),或者您可以解析命令的输出,ftpwho -v -o oneline
即 Proftpd 的命令使用记分板文件输出有关连接用户的不同类型信息。
答案2
检查该fuser
工具。它允许识别进程打开的文件和套接字。这应该是一个很好的起点。
答案3
尝试该netstat -tnp
命令,它将显示所有 TCP 连接 + IP + 该连接背后的进程的 PID。您还应该能够在 Proftpd 日志文件中找到客户端 IP。