用C调用linux shell,用来屏蔽对shell的直接引用

起因

有一个sqlite的数据库,用shell的方式获取查询的结果,然后输出到html文件,再将这个文件用shell发送给我。

实现

查询sqlite数据库文件见下:

#!/bin/sh
cd "/usr/local/lib/python3.6/dist-package/folder"

sqlite3 vlundb "select * from vluninfo where severity>=3;"

发邮件给我:

#!/bin/sh
cd "/usr/local/lib/python3.6/dist-packages/folder"

today=`date +%Y%m%d`
sh qs.sh > vluns-$today.html

mailx -r vluns-high@example.com -s "vluns-high-critical" mark@example.com <vluns-$today.html

C程序是网上抄的,见下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
        FILE *pipe=popen("sh /usr/local/lib/python3.6/dist-packages/folder/mailtome.sh", "r");
        if(pipe){
                char buffer[128];
                while(!feof(pipe)){
                        if(fgets(buffer,128,pipe)!=NULL){}
                }
                pclose(pipe);
                buffer[strlen(buffer)-1]=='\0';
        }
}

结果

将编译生成后的可执行文件拷贝到其他的目录执行,发现结果如所期望的实现了。

目前就这样吧。

| 访问量:
Table of Contents