Java 코드가 통신하는 고유 IP 주소 로깅

2390 단어 tutorialjavabash
최근에 통신하는 서버의 모든 Java 프로세스에 고유한 모든 IP 주소를 기록하는 유틸리티가 필요했습니다.

나는 조금 봤지만 이것에 대한 훌륭하고 쉬운 해결책을 찾지 못했습니다. 그래서 bash-fu를 하기로 결정하고 다음 스크립트를 작성했습니다.

while true
do
    netstat -nput 2>/dev/null | grep 'java' | tr -s ' ' | cut -f5 -d ' ' | cut -f1 -d ':' | uniq | while read -r ip; do grep -qxF $ip ip.log || echo $ip >> ip.log; done
    sleep 5
done

그것이 무엇을하는지 설명하기 위해 단계별로 살펴 보겠습니다.
  • while true - 이것은 실행될 때 중지될 때까지 실행된다는 것을 의미합니다. 쉬움
  • netstat -nputw 2>/dev/null - netstat가 네트워크 연결을 인쇄합니다.
  • -n - 호스트 이름을 확인하는 대신 숫자 주소를 표시합니다.
  • -p - 프로그램의 PID 표시
  • -u - UDP 연결 포함
  • -t - TCP 연결 포함

  • grep 'java' - Java가 포함된 행만 사용합니다(PID에는 Java 앱용 Java가 포함됨).
  • tr -s ' ' - 각 공백 시퀀스를 단일 공백으로 바꿉니다
  • .
  • cut -f5 -d ' ' - 다섯 번째 열을 사용합니다(공백으로 구분).
  • cut -f1 -d ':' - 첫 번째 부분을 사용합니다(:로 구분됨) - 포트 제거
  • uniq - 목록을 고유하게 만듭니다
  • .
  • while read -r ip; do grep -qxF $ip ip.log || echo $ip >> ip.log; done - 로그 파일에 아직 포함되어 있지 않으면 로그 파일에 추가합니다.
  • grep -qxF
  • -q - 조용함, 표준 출력에 아무것도 쓰지 않음
  • -x - 전체 행과 정확히 일치하는 일치 항목만 선택합니다
  • .
  • -F - PATTERNS를 고정 문자열로 해석합니다.



  • 이것이 도움이 되기를 바랍니다. 또는 더 나은 솔루션이 있으면 알려주세요.


    저를 팔로우하면 이와 같은 더 멋진 콘텐츠를 얻을 수 있습니다.

    좋은 웹페이지 즐겨찾기