2011-09-23 5 views
2

우리는 배포 된 소프트웨어 개발을위한 Subversion 저장소를 호스팅하고 있습니다. 그래서 비 종업원은 우리의 신비한 코드에 접근 할 수 있습니다. 우리 회사의 IT 보안 정책에 따라 회사 인트라넷 외부에서 업로드 한 모든 파일을 바이러스 검색해야합니다. 모든 내부 컴퓨터에는 최신 바이러스 스캐너가 장착되어 있습니다.Subversion : 사전 커밋 훅 (pre-commit hook)에서 사용자의 ip 주소 가져 오기?

우리는 Subversion precommit-hook에서 바이러스 검사를 통합 할 계획입니다. 그러나 이로 인해 큰 커밋을 수행 할 때 지연이 발생합니다. 따라서 인트라넷 외부에서 생성 된 커밋 만 검사하려고합니다. 출처를 확인하려면 커밋을 수행하는 사용자의 IP 주소가 필요합니다. 직원 중 일부는 집에서 일하기 때문에 인터넷에서 커밋을 식별하는 데 사용자 이름을 사용할 수 없습니다.

따라서 결국 내 질문 :

어떻게 내가이 IST 훅 precommit 서브 버전에서 수행 커밋하는에서 IP-ADRESS을받을 수 있나요? GITClientIP (또는 코드가 포함되어 사용) :이 링크를 통해 힘내에서 lib 디렉토리를 설치할 수 있습니다 DocumentationClientIP

:

답변

2

내가 당신이이 경우에, 당신은 다음과 같은 lib 디렉토리를 사용할 수 있습니다, 펄에 후크를 쓰기 가정 해 봅시다 .

설치 한 후, 당신은 당신의 코드에서 그 같은 것을 추가해야

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을 선택합니다.