我们正在为分布式软件开发托管一个subversion存储库。因此,非员工可以访问我们的一些代码。我们公司的IT安全策略要求我们对从公司内部网外部上传的所有文件进行病毒扫描。所有内部计算机都配备了最新的病毒扫描程序。
我们计划在Subversion precommit-hook中集成病毒扫描。但这会导致执行大型提交时出现延迟。因此,我们只想扫描源自Intranet之外的提交。要识别原点,我们需要执行提交的用户的IP地址。由于我们的一些员工在家工作,我们无法使用用户名来识别来自互联网的提交。
最后我的问题:
我怎样才能获得在subversion precommit钩子中执行提交的IP地址?
答案 0 :(得分:2)
让我想象你在Perl中编写钩子,在这种情况下,你可以使用以下lib:DocumentationClientIP
您可以通过此链接从Git安装lib:GITClientIP(或使用包含的代码)。
安装完成后,您需要在代码中添加类似内容:
use SVN::Utils::ClientIP qw(ssh_client_ip);
print "The client's IP address is ", ssh_client_ip();
答案 1 :(得分:2)
我正在使用lsof(bash-script pre-commit):
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(这是客户端和服务器之间的连接)。