📅  最后修改于: 2023-12-03 15:24:50.919000             🧑  作者: Mango
在进行服务器运维和安全性检查时,检查服务器上的监听端口是必要的一步。这可以帮助管理员识别哪些服务在服务器上运行,并确保它们只开放了必要的端口。下面是几种在 TypeScript 中检查服务器上监听端口的方法。
net
模块可以使用 Node.js 的 net
模块来获取服务器上开放的端口。以下是一个 TypeScript 示例:
import net from 'net';
const port = 80;
const server = net.createServer();
server.once('listening', () => {
console.log(`Port ${port} is open`);
server.close();
});
server.once('error', (err: Error) => {
console.log(`Port ${port} is closed`);
});
server.listen(port);
这个示例会监听 80 端口,并在端口成功开放时打印 Port 80 is open
。如果端口关闭或发生错误,则会打印 Port 80 is closed
。
tcp-port-used
模块可以使用 tcp-port-used
模块来检查服务器上的端口是否监听。以下是 TypeScript 示例:
import tcpPortUsed from 'tcp-port-used';
const port = 80;
tcpPortUsed.check(port, '127.0.0.1')
.then((inUse: boolean) => {
if (inUse) {
console.log(`Port ${port} is open`);
} else {
console.log(`Port ${port} is closed`);
}
}, (err: Error) => {
console.error(`Error checking port ${port}: ${err}`);
});
这个示例会检查 127.0.0.1 的 80 端口是否监听。如果端口开放,则打印 Port 80 is open
。如果端口关闭或发生错误,则会打印 Port 80 is closed
或 Error checking port 80: [错误消息]
。
除了使用 Node.js 库之外,还可以使用外部工具来检查端口。例如,可以使用 nmap
工具检查服务器上的端口。以下是一个 TypeScript 示例:
import { exec } from 'child_process';
const command = `nmap -p 80 127.0.0.1`;
exec(command, (error, stdout) => {
if (error) {
console.error(`Error checking port: ${error}`);
return;
}
if (stdout.includes('open')) {
console.log(`Port 80 is open`);
} else {
console.log(`Port 80 is closed`);
}
});
这个示例会执行 nmap -p 80 127.0.0.1
命令并在标准输出中搜索 'open'。如果端口开放,则打印 Port 80 is open
。如果端口关闭或发生错误,则会打印 Port 80 is closed
或 Error checking port: [错误消息]
。
通过以上三种方法,管理员可以方便地检查服务器上的监听端口,以保证服务器的安全性和稳定性。