我们目前拥有用C语言编写的代码,我必须添加逻辑以获取文件中特定内容的证据概念证明。所以我想要完成的是:
1 - 将此文件(/etc/vpnc/test.conf)从远程计算机下载到临时文件(本地)
2 - 搜索显示证据的多汁的东西在布丁中。 恩。 /etc/vpnc/test.conf
IPSec ID TestID
IPSec gateway blah.blah.com
IPSec secret 123456
Xauth username blah_user
Xauth password 123456!
IKE Authmode psk
#IKE DH Group dh2
#NAT Traversal Mode cisco-udp
Local Port 10000
DPD idle timeout (our side) 0
3 - 最后,只需使用已经存在的自定义函数将我的发现打印到stdout.ex:
Xauth username blah_user
其他人建议使用tmpnam和/或mkstemp函数
#include <stdio.h>
int main() {
char buf[4096];
char *n=tmpnam(NULL); // Use this as the file name, not tmp_file.
// get the file
...
FILE *fp=fopen(n, "r");
unlink(n);
// Read a line into 'buf' until we run out of lines
while(fgets(buf, 4096, fp))
{
// Check the contents of 'buf' for what you want
}
}
但我缺乏了解C已经减缓了我的速度。所以看看上面的代码,我如何得到以下结果: 代码:
rsync rsync://192.168.3.1/vpnc/test.conf
进入&#34; n&#34;临时文件?请原谅我的愚蠢。我保证我会拿一本C书来停止讨论论坛
答案 0 :(得分:0)
这是一种方式:
char cmd[200];
sprintf(cmd,"rsync rsync://192.168.3.1/vpnc/test.conf %s",n);
system(cmd);
FILE *fp=fopen(n, "r");
我假设tmpnam将返回一个不包含特殊字符的足够短文件名。通常这些名称只有10个字符左右,所以它应该很容易与char cmd[200]
一起放在命令的其余部分。