基于人工智能的自动化运维实现(二)代码及实现

2020-8-8 杰克 编程开发

    接上篇,思路框架有了后面就是一个实现过程了。在讯飞的开发平台官网上有这个“离线命令词识别SDK”的demo控制台程序,在底层的语音识别部分可以直接拿来使用。之前有朋友买过某宝的“XX精灵”智能音箱,在一段时间不与其说话后,为避免干扰人工智能程序会进入“休眠”模式而不响应任何语音指令。如需唤醒则必须先说“XX精灵”。在这里“XX精灵”相当于一个语音开关,个人认为这种模式还比较适合这种非连续性的对话。但在运维工作场景下一般都是持续不断的输入各种指令。于是我将底层语音识别部分的代码做成一种循环识别的模式

将原demo里面的do...while语句做了修改

do...while.png

原demo里语音指令识别出来直接显示在控制台里,我增加了将结果写入到一个"command.txt"文档里,同时调用指令判断和人机交互程序“audio.exe”进行指令判断和交互

audio.png

audio.exe程序中文字转语音进行交互的部分用到了微软TTS中的pSpVoice函数,在获取"command.txt"文档里有用的信息进行对比并发出语音

pSpVoice.png

至于外部程序的调用和具体运维命令的执行则通过Windows系统自带的cmd程序和第三方的SecureCRT来完成,其中系统自带的cmd因为后面要输入具体命令,而我不想用keybd_event等函数实现。就创建了一个命名管道程序“cmd-exe.exe”来实现命令的输入。命名管道server部分代码:

命名管道server.png

命名管道在audio.exe中的client部分代码:

命名管道client.png

我在程序目录下创建了一个cmd.ini配置文件,将一些命令提前写好供audio.exe中的client部分提取使用

cmd-ini.png

在一些Linux运维中系统自带的cmd就无法操作了,我这里调用了第三方程序SecureCRT来实现,但SecureCRT没有提供对外的API接口,命令输入和其他操作都只能用keybd_event等函数实现,很费劲。听说微软的新命令工具 Windows Terminal 非常好用,但对Cisco和华为等网络设备命令支持的不知道怎样

CRT.png



标签: 编程开发 C\C++ 人工智能 自动化运维

发表评论:

Powered by emlog 京ICP备17037512-1 e-mail:jackhkyin@163.com QQ:393147796