@@ -1431,5 +1431,136 @@ export const sandboxRun: Tool = {
14311431registerTool ( 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