C++驱动bash C++驱动bash的实现代码
Walk in loosing 人气:0想了解C++驱动bash的实现代码的相关内容吗,Walk in loosing在本文为您仔细讲解C++驱动bash的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C++驱动bash,下面大家一起来学习吧。
之前为了linux维护检验方便,实现lis命令采用centos别名实现。不恰当的别的干扰了别的命令的使用。为了不干扰系统命令,又不想每次输出执行bash的全命令,这次用C++驱动bash,这样编译好之后文件放入/usr/bin下后只要执行imedicallis命令就可呼出检验菜单。
实现代码
#include<cstdlib> #include<string> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; //定义数组大小 #define NUM 900 //执行方法 extern void Invoke(string cmd); #ifdef WIN32 /// <summary> /// 执行命令 /// </summary> /// <param name="cmd"></param> void Invoke(string cmd) { cout << "仅支持linux驱动检验运维命令:" << cmd << endl; } #else /// <summary> /// 执行命令 /// </summary> /// <param name="cmd"></param> void Invoke(string cmd) { char line[NUM]; FILE* fp; //系统调用 const char* sysCommand = cmd.data(); if ((fp = popen(sysCommand, "r")) == NULL) { cout << "错误" << endl; return; } //输出 while (fgets(line, sizeof(line) - 1, fp) != NULL) { cout << line; } pclose(fp); } #endif /// <summary> /// mian方法 /// </summary> /// <returns></returns> int main() { //执行bash脚本 string cmdStr = "bash /dthealth/app/dthis/imedicallis/tool/lis.sh"; cout << "欢迎使用imedicallis的linux命令呼出入口,通过imedicallis命令引导bash脚本" << endl; cout << "执行命令:" << cmdStr<<endl; //执行命令 Invoke(cmdStr); return 0; }
上传linux编译
[root@iris142 imedicallis]# ls CMakeLists.txt imedicallis imedicallis.cpp out [root@iris142 imedicallis]# g++ -o imedicallis imedicallis.cpp [root@iris142 imedicallis]# ll total 24 -rw-r--r-- 1 root root 363 Nov 16 14:09 CMakeLists.txt -rwxr-xr-x 1 root root 14120 Nov 16 16:30 imedicallis -rw-r--r-- 1 root root 1213 Nov 16 14:13 imedicallis.cpp drwxr-xr-x 3 root root 19 Nov 16 14:04 out [root@iris142 imedicallis]#
然后就得的可执行的imedicallis程序,投入/usr/bin下就是一个imedicallis命令,就可以如下使用
可以结合C++和bash实现菜单式运维命令,避免输错命令导致事故。命令就是一个控制台程序,没有那么神秘,实在是shell不好实现的功能用C++或者dotnetcore写代码实现也方便,结合各自优点,bash就是依赖少,修改快,能用他的还是优先用他。
加载全部内容