颠覆:在预提交挂钩中获取用户的 IP 地址?
Posted
技术标签:
【中文标题】颠覆:在预提交挂钩中获取用户的 IP 地址?【英文标题】:Subversion: Get ip-address of user in pre-commit hook? 【发布时间】:2011-11-23 16:54:45 【问题描述】:我们正在托管一个用于分布式软件开发的 subversion 存储库。因此,非员工可以访问我们的一些源代码。我们公司的 IT 安全政策要求我们对从公司 Intranet 外部上传的所有文件进行病毒扫描。所有内部计算机都配备了最新的病毒扫描程序。
我们计划将病毒扫描集成到 Subversion 预提交挂钩中。但这会在执行大型提交时导致延迟。因此,我们只想扫描源自我们内部网之外的提交。为了识别来源,我们需要执行提交的用户的 IP 地址。由于我们的一些员工在家工作,我们无法使用用户名来识别来自互联网的提交。
最后我的问题是:
如何获取在颠覆预提交挂钩中执行提交的 IP 地址?
【问题讨论】:
【参考方案1】:假设你用 Perl 编写你的钩子,在这种情况下,你可以使用以下库:DocumentationClientIP
您可以通过此链接从 Git 安装库:GITClientIP(或使用包含的代码)。
安装后,您需要在代码中添加类似的内容:
use SVN::Utils::ClientIP qw(ssh_client_ip);
print "The client's IP address is ", ssh_client_ip();
【讨论】:
【参考方案2】:我正在使用 lsof(bash 脚本预提交):
srcip=$(/usr/sbin/lsof -Pn -p $PPID | grep ESTABLISHED)
或者,仅获取 IP:
srcip=$(/usr/sbin/lsof -Pn|grep ssh|grep ESTA|cut -d\> -f 2|cut -d: -f 1)
当客户端连接到服务器时,会执行预提交。 lsof
显示所有打开的文件(包括 TCP 连接等);我为这个进程(-p $PPID
)选择所有“文件”,为ESTABLISHED
选择grep(这是客户端和服务器之间的连接)。
【讨论】:
以上是关于颠覆:在预提交挂钩中获取用户的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章