본문 바로가기
스터디/LINUX

[Linux] netstat 명령어로 서버간 파일 전송하기

by zoodi 2024. 7. 14.
728x90

목차

     

     

     

    1. netstat 명령어

    • netstat은 network statistics 의 약자로 네트워크 상태와 열려있는 포트에 관해 확인 할 수 있습니다.
    • 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스, 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 도구입니다.
    • netstat 명령어의 옵션들은 아래와 같습니다.

     

     

    • 상태값 의미
    Status Content
    LISTEN 연결 요구를 기다리는 상태. 포트가 열려있음
    ESTABLISHED 서로 연결되어 있는 상태
    SVN_SENT 클라이언트가 서버에 요구(SYN) 패킷을 보내고 연결을 요청한 상태
    SVN_RECV 서버가 클라이언트로부터 접속 요구(SYN)을 받아 클라이언트에게 응답(SYN/ACK)하였지만, 아직 클라이언트에게 확인 메시지(ACK)는 받지 못한 상태
    FIN_WAIT1 클라이언트가 서버에게 연결을 끊고자 요청하는 상태
    FIN_WAIT2 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태 (서버가 클라이언트로부터 최초로 FIN을 받은 후, 클라이언트에게 ACK를 주었을 때)
    TIME_WAIT 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태
    CLOSE_WAIT 원격의 연결을 요청을 받고 연결이 종료되길 기다리는 상태
    LAST_ACK 연결이 종료되었고 승인을 기다리는 상태
    CLOSED 완전히 연결이 종료된 상태
    UNKNOWN 소켓의 상테를 알 수 없음

     

    2. netstat 설치

    netstat이 설치되어있지 않다면 설치해줍니다.

    yum install net-tools //CentOS
    apt install net-tools //Ubuntu

     

    3. 파일 전송하는 서버 명령어

    • 백업 할 파일을 전송하는 서버(task-api server)에서 실행한 스크립트(명령어) 입니다.
    #!/bin/bash
     
    # 로그 파일들을 압축
    # tar -zcvf [압축파일명.gz] [압축하려는 폴더명]
    tar -zcvf [컴포넌트명]_logs.gz logs/*
     
    # netcat을 사용하여 Fairy서버로 전송 (Fairy서버의 IP와 포트를 지정)
    # Netcat이 연결을 시도하거나 데이터 전송 중 3초 동안 응답이 없으면 연결 종료
    nc -w 3 {Fairy서버IP} {Fairy서버 PORT} < [컴포넌트명]_logs.gz
     
    # 임시로 만든 tar.gz 파일 삭제
    rm logs.tar.gz

     

    • -w 3 :  타임아웃 옵션입니다. 이 명령어는 Netcat이 연결을 시도하거나 데이터 전송 중에 3초 동안 응답이 없으면 연결을 종료하도록 합니다.

     

     

    4. 파일 수신하는 서버 명령어

    • 파일을 수신하는 서버(fairy server)에서 실행시킨 스크립트(명령어) 입니다.
    #!/bin/bash
     
    # netcat을 사용하여 task-api 서버로부터 데이터를 받아 logs 폴더에 저장
    # fairy서버 포트를 지정하여 리스닝 모드로 전환. Netcat이 지정된 포트에서 들어오는 연결을 기다림
    nc -l -p {Fairy서버_PORT} > /home1/irteam/logs/[컴포넌트명]_logs.gz
     
    # tar 파일 압축 해제
    tar -xzf /logs/[컴포넌트명]_logs.gz -C /home1/irteam/logs
     
    # 임시로 받은 tar.gz 파일 삭제
    rm /logs/[컴포넌트명]_logs.gz
    • -l : 리스닝 모드 옵션입니다. Netcat이 지정된 포트에서 들어오는 연결을 기다리도록 합니다.
    • -p [B서버_PORT] :  포트 지정 옵션입니다. Netcat이 리스닝할 포트 번호를 지정합니다. 여기서 B서버_PORT는 B서버에서 사용할 포트 번호를 의미합니다.

     

    2) 파일을 수신하는 스크립트 실행 후 1) 파일 전송 스크립트를 실행시키면 정상적으로 파일이 전송된 것을 확인 할 수 있습니다.

     


    참고자료
     https://velog.io/@rbdus96/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-netstat

    728x90

    댓글