เครื่องมือ ping ง่ายๆ รองรับโปรโตคอล TCP / UDP / ICMP
ปิงกัสได้...
ส่งคำขอ ICMP echo & ttl Traceroute
ส่ง ping, สแกนไปยังพอร์ต TCP / UDP และการจับแบนเนอร์
ส่งแพ็คเก็ตมายากล (Wake on LAN) โดยใช้ UDP ping
pingus.Ping
'ready'
'result'
'error'
ping.send()
pingus.PingTCP
ขยาย: pingus.Ping
new PingTCP(options)
pingtcp.send()
pingtcp.scan()
pingus.PingUDP
ขยาย: pingus.Ping
new PingUDP(options)
pingudp.send()
pingudp.scan()
pingus.PingICMP
ขยาย: pingus.Ping
new PingICMP(options)
pingicmp.send()
pingicmp.traceroute()
Callback
หรือ Promise
( async/await
)pingus.tcp(options[, callback])
pingus.tcpscan(options[, callback])
pingus.udp(options[, callback])
pingus.udpscan(options[, callback])
pingus.wol(mac, options[, callback])
pingus.icmp(options[, callback])
pingus.traceroute(options[, callback])
npm i pingus
หากเกิดข้อผิดพลาดระหว่างการติดตั้ง อาจเนื่องมาจากความล้มเหลวในการติดตั้งแพ็คเกจต่อไปนี้
สามารถแก้ไขได้โดยการติดตั้งคอมไพเลอร์ GCC
ในอูบุนตู:
sudo apt-get install -y build-essential
ในวินโดวส์:
ติดตั้ง Visual Studio
รวมถึง Desktop development with C++
// 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 ) ;
// Result
{
type : 'ping/tcp' ,
status : 'open' ,
host : 'localhost' ,
ip : IP { label : '127.0.0.1' } ,
ips : [ IP { label : '127.0.0.1' } ] ,
time : 2 ,
port : 22 ,
name : 'ssh' ,
banner : 'SSH-2.0-OpenSSH_8.9p1 Ubuntu-3'
toPrimitiveJSON : [ Function ( anonymous ) ]
}
pingus.Ping
pingus.Ping
คือ EventEmitter
โดยมีเหตุการณ์ต่อไปนี้:
'ready'
result
<Object>
ปล่อยออกมาเมื่อพร้อม (แก้ไข DNS, กรอง Bogon IP) เพื่อส่ง ping หลังจากการโทร ping.send()
import pingus from 'pingus' ;
const ping = new pingus . PingTCP ( {
host : 'example.com' ,
} ) ;
ping . on ( 'ready' , ( result ) => {
const data = result . toPrimitiveJSON ( ) ;
console . log ( 'pingttarget:t' , data . host ) ;
console . log ( 'tips:t' , data . ips ) ;
} ) ;
ping . send ( ) ;
ping target: example.com
ips: [ '93.184.215.14', '2606:2800:021f:cb07:6820:80da:af6b:8b2c' ]
'result'
result
<Object>
ผลลัพธ์ของข้อมูล ping
import pingus from 'pingus' ;
const ping = new pingus . PingTCP ( {
host : 'example.com' ,
} ) ;
ping . on ( 'result' , ( result ) => {
const data = result . toPrimitiveJSON ( ) ;
console . log ( result ) ;
} ) ;
ping . send ( ) ;
{
type : 'ping/tcp' ,
status : 'open' ,
host : 'example.com' ,
ip : '93.184.215.14' ,
ips : [ '93.184.215.14' , '2606:2800:021f:cb07:6820:80da:af6b:8b2c' ] ,
time : 134 ,
port : 80 ,
name : 'http' ,
banner : ''
}
'error'
<Error>
result
<Object>
ปล่อยออกมาเมื่อมีข้อผิดพลาดเกิดขึ้น result
มีคำสั่งสุดท้ายก่อนเกิดข้อผิดพลาดและรหัสข้อผิดพลาด
ping.send()
ส่งปิง. ดูตัวอย่างบางส่วนในการใช้งาน
pingus.PingTCP
ขยาย: pingus.Ping
คลาสสำหรับการปิง TCP
pingus.PingTCP
เป็นประเภทของ pingus.Ping
new PingTCP(options)
options
<Object>
host
<string>
ตั้งชื่อโฮสต์เป้าหมาย (โดเมน) หรือที่อยู่ IPport
<number>
ตั้งค่าพอร์ตเป้าหมายเมื่อใช้ pingtcp.send()
ค่าเริ่มต้น: 80
ports
<Array>
| <string>
ตั้งค่าพอร์ตเป้าหมายเมื่อใช้ pingtcp.scan()
ใช้อาร์เรย์ของหมายเลขพอร์ตหรือสตริงการสืบค้น ดูตัวอย่างtimeout
<number>
ตั้งค่าการหมดเวลา ค่าเริ่มต้น: 2000
resolveDNS
<boolean>
แก้ไขระเบียน DNS A
และ AAAA
เมื่อ host
เป็นที่อยู่โดเมน ค่าเริ่มต้น: true
dnsServer
<string>
ตั้งค่าเซิร์ฟเวอร์ DNS เพื่อแก้ไขบันทึก DNSfilterBogon
<boolean>
กรองที่อยู่ IP ของ bogon ใน host
ค่าเริ่มต้น: true
options.ports
ports: [ 21 , 22 , 80 , 443 ] ; // Scan port 21, 22, 80, 443
ports: '21,22,80,443' ; // Scan port 21, 22, 80, 443
ports: '21-80' ; // Scan ports in range 21 to 80 (21, 22, 23 ... 78, 79, 80)
ports: '21-25,80,443' ; // Scan ports in range 21 to 25 and 80, 443
ports: '@' ; // Scan most used 1024 ports in protocol
ports: '*' ; // Scan all ports (1 to 65535)
pingtcp.send()
ดูที่ ping.send()
ตัวอย่างบางส่วนในการใช้งาน
pingtcp.scan()
สแกนพอร์ตโดยใช้ TCP ping ส่งคืนผลลัพธ์ในเหตุการณ์: 'result'
ดูตัวอย่างบางส่วนในการใช้งาน
pingus.PingUDP
ขยาย: pingus.Ping
คลาสสำหรับการปิง UDP
pingus.PingUDP
เป็นประเภทของ pingus.Ping
new PingUDP(options)
options
<Object>
host
<string>
ตั้งชื่อโฮสต์เป้าหมาย (โดเมน) หรือที่อยู่ IPport
<number>
ตั้งค่าพอร์ตเป้าหมายเมื่อใช้ pingudp.send()
ค่าเริ่มต้น: 68
ports
<Array>
| <string>
ตั้งค่าพอร์ตเป้าหมายเมื่อใช้ pingudp.scan()
ใช้อาร์เรย์ของหมายเลขพอร์ตหรือสตริงการสืบค้น เช่นเดียวกับ PingTCP ดูตัวอย่างbuffer
<Buffer>
ตั้งค่าบัฟเฟอร์เมื่อส่งบนซ็อกเก็ต UDP ping ที่เชื่อมต่ออยู่body
<string>
ตั้งค่า body เมื่อส่งไปยัง UDP ping socket ที่เชื่อมต่ออยู่ ละเว้นเมื่อตั้งค่าตัวเลือก buffer
bytes
<number>
ตั้งค่าความยาวไบต์แบบสุ่มเมื่อส่งบนซ็อกเก็ต UDP ping ที่เชื่อมต่อ ละเว้นเมื่อตั้งค่าตัวเลือก body
ค่าเริ่มต้น: 32
timeout
<number>
ตั้งค่าการหมดเวลา ค่าเริ่มต้น: 2000
resolveDNS
<boolean>
แก้ไขระเบียน DNS A
และ AAAA
เมื่อ host
เป็นที่อยู่โดเมน ค่าเริ่มต้น: true
dnsServer
<string>
ตั้งค่าเซิร์ฟเวอร์ DNS เพื่อแก้ไขบันทึก DNSfilterBogon
<boolean>
กรองที่อยู่ IP ของ bogon ใน host
ค่าเริ่มต้น: true
pingudp.send()
ดูที่ ping.send()
ตัวอย่างบางส่วนในการใช้งาน
pingudp.scan()
คล้ายกับ pingtcp.scan()
สแกนพอร์ตโดยใช้ UDP ping ส่งคืนผลลัพธ์ในเหตุการณ์: 'result'
ดูตัวอย่างบางส่วนในการใช้งาน
pingus.PingICMP
ขยาย: pingus.Ping
คลาสสำหรับการปิง ICMP
pingus.PingICMP
เป็นประเภทของ pingus.Ping
new PingICMP(options)
options
<Object>
host
<string>
ตั้งชื่อโฮสต์เป้าหมาย (โดเมน) หรือที่อยู่ IPttl
<number>
ตั้งค่า ttl ค่าเริ่มต้น: 128
ttln
<number>
ตั้งค่า start ttl เมื่อใช้ pingicmp.traceroute()
ค่าเริ่มต้น: 1
ttlx
<number>
ตั้งค่า ttl สูงสุดเมื่อใช้ pingicmp.traceroute()
ค่าเริ่มต้น: 64
timeout
<number>
ตั้งค่าการหมดเวลา ค่าเริ่มต้น: 2000
timeoutx
<number>
ตั้งค่าการหมดเวลาสูงสุด-สแต็กเมื่อใช้ pingicmp.traceroute()
ค่าเริ่มต้น: 8
resolveDNS
<boolean>
แก้ไขระเบียน DNS A
และ AAAA
เมื่อ host
เป็นที่อยู่โดเมน ค่าเริ่มต้น: true
dnsServer
<string>
ตั้งค่าเซิร์ฟเวอร์ DNS เพื่อแก้ไขบันทึก DNSfilterBogon
<boolean>
กรองที่อยู่ IP ของ bogon ใน host
ค่าเริ่มต้น: true
pingicmp.send()
ดูที่ ping.send()
ตัวอย่างบางส่วนในการใช้งาน
pingicmp.traceroute()
เรียกใช้การติดตาม ตัวอย่างบางส่วนในการใช้งาน
Callback
หรือ Promise
( async/await
)ดูตัวอย่างใน Send Ping Styles
pingus.tcp(options[, callback])
ส่งปิง TCP
pingus.tcpscan(options[, callback])
สแกนพอร์ตโดยใช้ TCP ping
pingus.udp(options[, callback])
ส่งปิง UDP
pingus.udpscan(options[, callback])
สแกนพอร์ตโดยใช้ UDP ping
pingus.wol(mac, options[, callback])
mac
<string>
ตั้งค่าที่อยู่ MAC เป้าหมายoptions
<Object>
เหมือนกับตัวเลือกของ new PingUDP(options)
ส่งเมจิกแพ็กเก็ต UDP ping เพื่อใช้คุณสมบัติ WOL
pingus.icmp(options[, callback])
ส่งปิง ICMP
pingus.traceroute(options[, callback])
เรียกใช้การติดตาม
ESM (ชนิดสคริปต์)
import pingus from 'pingus' ;
ซีเจเอส
const pingus = require ( 'pingus' ) ;
Class
ขยาย EventEmitter
// TCP ping to localhost:80
new pingus . PingTCP ( { host : 'localhost' } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. send ( ) ;
Callback
// TCP ping to localhost:80
pingus . tcp ( { host : 'localhost' } , ( err , result ) => {
if ( err ) {
throw err ;
}
console . log ( result ) ;
} ) ;
Promise
// TCP ping to localhost:80
pingus
. tcp ( { host : 'localhost' } )
. then ( ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. catch ( ( err ) => {
throw err ;
} ) ;
async/await
// TCP ping to localhost:80
const result = await pingus . tcp ( { host : 'localhost' } ) ;
console . log ( result . toPrimitiveJSON ( ) ) ;
{
type : 'ping/tcp' ,
status : 'open' ,
host : 'localhost' ,
ip : '127.0.0.1' ,
ips : [ '127.0.0.1' ] ,
time : 2 ,
port : 80 ,
name : 'http' ,
banner : ''
}
// TCP ping to localhost:22
new pingus . PingTCP ( { host : 'localhost' , port : 22 } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. send ( ) ;
{
type : 'ping/tcp' ,
status : 'open' ,
host : 'localhost' ,
ip : '127.0.0.1' ,
ips : [ '127.0.0.1' ] ,
time : 2 ,
port : 22 ,
name : 'ssh' ,
banner : 'SSH-2.0-OpenSSH_8.9p1 Ubuntu-3'
}
// TCP ping scan to localhost
new pingus . PingTCP ( {
host : 'localhost' ,
ports : [ 21 , 22 , 80 , 443 , 3306 , 8080 ] ,
} )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. scan ( ) ;
{
type : 'ping/tcp/scan' ,
status : 'finish' ,
host : 'localhost' ,
ip : '127.0.0.1' ,
ips : [ '127.0.0.1' ] ,
time : 2009 ,
port : 80 ,
name : 'http' ,
banner : '' ,
ports : [ 21 , 22 , 80 , 443 , 3306 , 8080 ] ,
statuses : {
open : [ 22 , 80 , 8080 ] ,
reset : [ ] ,
close : [ 21 , 443 , 3306 ] ,
filtered : [ ] ,
error : [ ]
} ,
names : {
'21' : 'ftp' ,
'22' : 'ssh' ,
'80' : 'http' ,
'443' : 'https' ,
'3306' : 'mysql' ,
'8080' : 'http-alt'
} ,
banners : { '22' : 'SSH-2.0-OpenSSH_8.9p1 Ubuntu-3' } ,
errors : { }
}
// UDP ping to localhost:19132
new pingus . PingUDP ( { host : 'localhost' , port : 19132 } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. send ( ) ;
{
type : 'ping/udp' ,
status : 'close' ,
host : 'localhost' ,
ip : '127.0.0.1' ,
ips : [ '127.0.0.1' ] ,
time : 2 ,
port : 19132 ,
name : 'minecraft-be'
}
// UDP ping scan to localhost
new pingus . PingUDP ( {
host : 'localhost' ,
ports : [ 67 , 68 , 161 , 162 , 445 ] ,
} )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. scan ( ) ;
{
error : undefined ,
type : 'ping/udp/scan' ,
status : 'finish' ,
host : 'localhost' ,
ip : '127.0.0.1' ,
ips : [ '127.0.0.1' ] ,
time : 2003 ,
ports : [ 67 , 68 , 161 , 162 , 445 ] ,
statuses : {
open : [ 68 ] ,
reset : [ ] ,
close : [ 67 , 161 , 162 , 445 ] ,
filtered : [ ] ,
error : [ ]
} ,
names : {
'67' : 'bootps' ,
'68' : 'bootpc' ,
'161' : 'snmp' ,
'162' : 'snmptrap' ,
'445' : 'microsoft-ds'
} ,
banners : { } ,
errors : { }
}
// Send magic packet using UDP ping to 00-00-00-00-00-00
pingus
. wol ( '00-00-00-00-00-00' )
. then ( ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. catch ( ( error ) => {
throw error ;
} ) ;
{
type : 'ping/udp' ,
status : 'open' ,
host : '255.255.255.255' ,
ip : '255.255.255.255' ,
ips : [ '255.255.255.255' ] ,
time : 2 ,
port : 9 ,
name : 'discard'
}
// ICMP ping to example.com
new pingus . PingICMP ( { host : 'example.com' } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. send ( ) ;
{
type : 'ping/icmp' ,
status : 'reply' ,
host : 'example.com' ,
ip : '93.184.215.14' ,
ips : [ '93.184.215.14' , '2606:2800:021f:cb07:6820:80da:af6b:8b2c' ] ,
time : 130 ,
ttl : 128 ,
bytes : 32 ,
reply : {
source : '93.184.216.34' ,
type : 0 ,
code : 0 ,
typestr : 'ECHO_REPLY' ,
codestr : 'NO_CODE' ,
body : '767284c4'
}
}
// ICMP ping to example.com using ttl = 10
new pingus . PingICMP ( { host : 'example.com' , ttl : 10 } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. send ( ) ;
{
type : 'ping/icmp' ,
status : 'exception' ,
host : 'example.com' ,
ip : '93.184.215.14' ,
ips : [ '93.184.215.14' , '2606:2800:021f:cb07:6820:80da:af6b:8b2c' ] ,
time : 133 ,
ttl : 10 ,
bytes : 32 ,
reply : {
source : '152.195.76.133' ,
type : 11 ,
code : 0 ,
typestr : 'TIME_EXCEEDED' ,
codestr : 'NO_CODE' ,
body : ']8X"bx00CQx00x00x00x00'
}
}
// Traceroute to example.com
new pingus . PingICMP ( { host : 'example.com' , timeout : 500 } )
. on ( 'result' , ( result ) => {
console . log ( result . toPrimitiveJSON ( ) ) ;
} )
. on ( 'error' , ( err , result ) => {
throw err ;
} )
. traceroute ( ) ;
{
type : 'ping/icmp/traceroute' ,
status : 'finish' ,
host : 'example.com' ,
ip : '93.184.215.14' ,
ips : [ '93.184.215.14' , '2606:2800:021f:cb07:6820:80da:af6b:8b2c' ] ,
time : 7614 ,
ttl : 128 ,
bytes : 32 ,
hops : [
{
status : 'time_exceeded' ,
ip : '172.19.80.1' ,
ttl : 1 ,
rtt : { min : 0 , max : 1 , avg : 1 }
} ,
{
status : 'time_exceeded' ,
ip : '172.30.1.254' ,
ttl : 2 ,
rtt : { min : 0 , max : 1 , avg : 1 }
} ,
{
status : 'timeout' ,
ip : null ,
ttl : 3 ,
rtt : { min : 2001 , max : 2002 , avg : 2002 }
} ,
{
status : 'time_exceeded' ,
ip : '112.188.59.77' ,
ttl : 4 ,
rtt : { min : 2 , max : 3 , avg : 3 }
} ,
{
status : 'time_exceeded' ,
ip : '112.188.53.13' ,
ttl : 5 ,
rtt : { min : 1 , max : 2 , avg : 2 }
} ,
{
status : 'time_exceeded' ,
ip : '112.174.47.177' ,
ttl : 6 ,
rtt : { min : 7 , max : 8 , avg : 8 }
} ,
{
status : 'time_exceeded' ,
ip : '112.174.91.130' ,
ttl : 7 ,
rtt : { min : 7 , max : 8 , avg : 8 }
} ,
{
status : 'time_exceeded' ,
ip : '112.174.87.102' ,
ttl : 8 ,
rtt : { min : 129 , max : 130 , avg : 130 }
} ,
{
status : 'time_exceeded' ,
ip : '206.72.210.112' ,
ttl : 9 ,
rtt : { min : 127 , max : 128 , avg : 128 }
} ,
{
status : 'time_exceeded' ,
ip : '152.195.76.151' ,
ttl : 10 ,
rtt : { min : 132 , max : 134 , avg : 133 }
} ,
{
status : 'reply' ,
ip : '93.184.215.14' ,
ttl : 11 ,
rtt : { min : 126 , max : 126 , avg : 126 }
}
]
}