Technical/NodeJS

[NodeJS][NPM] pingus package 사용법

sga8 2024. 1. 8. 14:45
728x90
반응형

 

NodeJS 환경에서 Ping을 날리기 위한 방법.

 

pingus package를 사용해보고자 한다!

https://github.com/wnynya/Pingus

 

GitHub - wnynya/Pingus: A simple network ping tool in nodejs. Supports TCP / UDP / ICMP protocol.

A simple network ping tool in nodejs. Supports TCP / UDP / ICMP protocol. - GitHub - wnynya/Pingus: A simple network ping tool in nodejs. Supports TCP / UDP / ICMP protocol.

github.com

 

// TCP Ping to localhost:22
import pingus from 'pingus'; // ESM, Typescript
const pingus = require('pingus'); // CJS

pingus.tcp({ host: 'localhost', port: 22 }).then(console.log);

 

ping의 결과에 따라 banner/status 등에 대한 값이 달라짐. github에서는 확인이 어렵고, 내부 코드를 통해 확인함.

TCP Socket on Result 값 변화 Result Example
connect ip : 연결 주소
time : 연결 소요 시간
{
  type: 'ping/tcp',
  status: 'filtered',
  host: '12.34.13.44',
  ip: IP { label: '12.34.13.44' },
  ips: [ IP { label: '12.34.13.44' } ],
  time: 2000,
  port: 22,
  name: 'ssh',
  banner: ''
}
data banner: SSH 관련 정보 {
  type: 'ping/tcp',
  status: 'open',
  host: '1.1.9.2',
  ip: IP { label: '1.1.9.2' },
  ips: [ IP { label: '1.1.9.2' } ],
  time: 1,
  port: 22,
  name: 'ssh',
  banner: 'SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.6'
}
close name: banner에 따라 SSH/FTP/MySQL 등으로 채워짐  
timeout time: 연결 소요 시간
status: filtered
 
error error.code가 ECONNREFUSED인 경우
status: close

error.code가 ECONNRESET인 경우
status: reset

그 외의 경우
status: error
 

 

  • ESM (ES Modules)
    • 자바스크립트의 공식적인 모듈시스템
    • import 는 비동기식으로 실행됨.
    • 먼저 가져온 스크립트를 실행하는 게 아니라 import 구문을 찾아서 스크립트를 파싱함.
    • 더 이상 import 할 스크립트가 없을 때 까지 import를 찾은 뒤 의존성 그래프를 생성함.
    • 파일을 불러오는 동안 메인 스레드를 차단하지 않음.
  • CJS (Common JS)
    • 비공식 모듈 시스템
    • require() 는 동기식으로 실행됨. promise나 callback을 반환하지 않음.
    • 네트워크 혹은 저장매체체로부터 읽어오는 즉시 스크립트를 실행함.
    • 파일을 불러오는 동안 메인 스레드를 차단함.

cf) 참고 사이트: https://velog.io/@wejaan/webpack-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

 

728x90
반응형