Technical/NodeJS
[NodeJS][NPM] pingus package 사용법
sga8
2024. 1. 8. 14:45
728x90
반응형
NodeJS 환경에서 Ping을 날리기 위한 방법.
pingus package를 사용해보고자 한다!
https://github.com/wnynya/Pingus
// 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
반응형