Skip to content

Commit 5d4b77a

Browse files
committed
feat: 增加常用网络检测命令
1 parent 734b88a commit 5d4b77a

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed

src/apiTools.ts

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,5 +1431,136 @@ export const sandboxRun: Tool = {
14311431
registerTool(sandboxRun);
14321432

14331433

1434+
/** Ping 工具 */
1435+
export const ping: Tool = {
1436+
name: 'ping',
1437+
description: `在 Windows 系统中使用 ping 命令测试网络连通性。适用于需要确认目标主机是否可达的场景。
1438+
1439+
使用场景:
1440+
- 网络诊断: 测试网络连通性,确保目标主机在线。
1441+
- 自动化脚本: 在脚本中进行网络健康检查。
1442+
1443+
如何使用:
1444+
- 参数: 一个字符串,表示目标主机名或 IP 地址。
1445+
- 返回: ping 的结果,包含每个响应的 RTT 时间。`,
1446+
parameters: {
1447+
type: 'object',
1448+
properties: {
1449+
target: {
1450+
type: 'string',
1451+
description: '目标主机名或 IP 地址。',
1452+
},
1453+
},
1454+
required: ['target'],
1455+
},
1456+
function: async ({ target }: { target: string }) => {
1457+
try {
1458+
// 执行 ping 命令
1459+
const { stdout, stderr } = await execPromise(`ping -n 4 ${target}`);
1460+
1461+
// 处理并返回结果
1462+
if (stderr) {
1463+
return `错误: ${stderr}`;
1464+
}
1465+
return `Ping 结果: \n${stdout}`;
1466+
} catch (error) {
1467+
return `Ping 执行失败: ${(error as Error).message}`;
1468+
}
1469+
},
1470+
};
1471+
1472+
/** Telnet 工具 (通过 PowerShell Test-NetConnection) */
1473+
export const telnet: Tool = {
1474+
name: 'telnet',
1475+
description: `在 Windows 中测试 TCP 端口连通性(使用 PowerShell)。适用于确认目标端口是否可用。
1476+
1477+
使用场景:
1478+
- 网络诊断: 确认目标主机上的服务是否在指定端口上运行。
1479+
- 自动化脚本: 在脚本中进行端口健康检查。
1480+
1481+
如何使用:
1482+
- 参数: 主机名或 IP 地址,以及端口号。
1483+
- 返回: 端口连接的测试结果。`,
1484+
parameters: {
1485+
type: 'object',
1486+
properties: {
1487+
host: {
1488+
type: 'string',
1489+
description: '目标主机名或 IP 地址。',
1490+
},
1491+
port: {
1492+
type: 'string',
1493+
description: '目标端口号。',
1494+
},
1495+
},
1496+
required: ['host', 'port'],
1497+
},
1498+
function: async ({ host, port }: { host: string; port: string }) => {
1499+
try {
1500+
// 执行 Telnet 命令(通过 PowerShell)
1501+
const script = `Test-NetConnection -ComputerName "${host}" -Port ${port} | Format-List`;
1502+
const { stdout, stderr } = await execPromise(`powershell -Command "${script}"`);
1503+
1504+
// 处理并返回结果
1505+
if (stderr) {
1506+
return `错误: ${stderr}`;
1507+
}
1508+
return `Telnet 结果: \n${stdout}`;
1509+
} catch (error) {
1510+
return `Telnet 执行失败: ${(error as Error).message}`;
1511+
}
1512+
},
1513+
};
1514+
1515+
/** Nslookup 工具 */
1516+
export const nslookup: Tool = {
1517+
name: 'nslookup',
1518+
description: `在 Windows 中查询域名解析记录。适用于获取 DNS 解析信息。
1519+
1520+
使用场景:
1521+
- 网络诊断: 查询某个域名的 DNS 记录。
1522+
- 自动化脚本: 在脚本中获取域名的解析记录,判断域名是否有效。
1523+
1524+
如何使用:
1525+
- 参数: 需要查询的域名。
1526+
- 返回: 查询的 DNS 记录信息。`,
1527+
parameters: {
1528+
type: 'object',
1529+
properties: {
1530+
domain: {
1531+
type: 'string',
1532+
description: '要查询的域名。',
1533+
},
1534+
},
1535+
required: ['domain'],
1536+
},
1537+
function: async ({ domain }: { domain: string }) => {
1538+
try {
1539+
// 执行 Nslookup 命令
1540+
const { stdout, stderr } = await execPromise(`nslookup ${domain}`);
1541+
1542+
// 处理并返回结果
1543+
if (stderr) {
1544+
return `错误: ${stderr}`;
1545+
}
1546+
return `Nslookup 结果: \n${stdout}`;
1547+
} catch (error) {
1548+
return `Nslookup 执行失败: ${(error as Error).message}`;
1549+
}
1550+
},
1551+
};
1552+
1553+
/** 执行命令并返回 Promise */
1554+
function execPromise(command: string): Promise<{ stdout: string; stderr: string }> {
1555+
return new Promise((resolve, reject) => {
1556+
exec(command, (error, stdout, stderr) => {
1557+
if (error) {
1558+
reject(error);
1559+
} else {
1560+
resolve({ stdout, stderr });
1561+
}
1562+
});
1563+
});
1564+
}
14341565

14351566

0 commit comments

Comments
 (0)