2

我们正在托管一个用于分布式软件开发的 subversion 存储库。因此,非员工可以访问我们的一些源代码。我们公司的 IT 安全政策要求我们对从公司 Intranet 外部上传的所有文件进行病毒扫描。所有内部计算机都配备了最新的病毒扫描程序。

我们计划将病毒扫描集成到 Subversion 预提交挂钩中。但这会在执行大型提交时导致延迟。因此,我们只想扫描源自我们内部网之外的提交。为了识别来源,我们需要执行提交的用户的 IP 地址。由于我们的一些员工在家工作,我们无法使用用户名来识别来自互联网的提交。

因此,最后我的问题:

如何获取在颠覆预提交挂钩中执行提交的 IP 地址?

4

2 回答 2

2

让我想象你用 Perl 编写你的钩子,在这种情况下,你可以使用以下库:DocumentationClientIP

您可以通过此链接从 Git 安装库:GITClientIP(或使用包含的代码)。

安装后,您需要在代码中添加类似的内容:

    use SVN::Utils::ClientIP qw(ssh_client_ip);

    print "The client's IP address is ", ssh_client_ip();
于 2011-09-23T13:53:22.147 回答
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 $PPIDgrep 。ESTABLISHED

于 2012-04-27T14:55:33.623 回答