Tag Archives: 포트확인

[Source | Nodejs] 방화벽 확인

다수의 서버에 포트 오픈여부를 확인하기 위한 코드를 정리합니다.


작성일 : 2022-01-26
nodeJs Ver : v16.13.1


1> 코드작성 (checkPort.js)

// For Execute Shell
//   node checkPort.js > checkPortResult.log
const net = require("net");
const target = require("./target");

const checkport = (host, port) => {
    return new Promise((resolve, reject) => {
        const socket = new net.Socket();
        socket.on("connect", () => {
            socket.destroy();
            resolve({host, port, isAlive: true});
        });
        socket.on("timeout", () => {
            socket.destroy();
            resolve({host, port, isAlive: false});
        });
        socket.on("error", (exception) => {
            //console.error(exception);
            socket.destroy();
            resolve({host, port, isAlive: null});
        });
        socket.setTimeout(target.checkTimeout);
        socket.connect(port, host);
    });
};

const checkNext = () => {    
    const targetInfo = target.serverList.shift().split(":");
    const name = targetInfo.pop().trim();
    const port = targetInfo.pop().trim();
    const host = targetInfo.pop().trim();
    checkport(host, port).then(result => {
        console.log(`${result.isAlive ? "O" : "X"}\t${name}\t${result.host}:${result.port}`);
        if(target.serverList.length <= 0) {
            return;
        } else {
            checkNext();
        }
    });
};

checkNext();

2> 체크 타임아웃과 대상서버 목록 (target.js)

exports.checkTimeout = 3000;
exports.serverList = [
    // IP : PORT : NAME
    "223.130.200.104 : 80 : NAVER",
    "223.130.200.105 : 8080 : NAVER-ERROR",
];

3> 다음 명령으로 실행하면 결과가 파일(checkPortResult.log)에 작성된다.

node checkPort.js > checkPortResult.log

[Tip | Windows10] 서비스 포트 확인

윈도우 환경에서 포트를 확인하고 사용중인 프로세스를 종료하는 방법을 설명한다.
포트가 이미 사용중이라는 에러 메시지가 발생할 경우 프로세스를 종료해야만 한다.
(예, Eclipse 비정상 종료시 tomcat이 종료되지 않아 아래와 같은 메시지를 출력한다.)


테스트환경 : Windows10
작성일 : 2021-02-20

1> 사용중인 프로세스를 확인

# 명령프롬프트 실행 또는 실행(윈도우키 + R) > cmd
netstat -ano | findstr "8005 8080 8009"

2> 프로세스 종료
왼쪽(로컬주소)에서 사용중인 프로세스 PID 5288 을 taskkill명령으로 종료한다.

taskkill /f /pid 5288

명령 실행 후 프로세스 종료를 확인한다.