linux script命令的开发使用

truetempus 2018-09-13 04:45:22
最近有个项目,需要监视linux系统下用户在终端的操作记录,研究下了可以使用script命令进行将操作记录形成文本,文本文件用cat命令可以查看,效果很好,如下图


这个文件我需要用程序读取,并发送给其他服务器的,但读出结果却是乱码
vi打开效果如下图

gedit打开效果如下图


从实际的文本内容来看,里面应该还记录了一些ASCII控制字符,
不知道有没有什么方法可以去除这些控制字符,可以让我程序读出的内容与cat命令显示一样,希望有经验的大神帮帮我,就50分了,全部送出,谢谢
...全文
1052 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
那我想在脚本文件里面使用这个,该怎么办
qujianjun88 2018-11-20
  • 打赏
  • 举报
回复
刚做了一个和你类似的项目,需要把script录制文件在程序里面用sed正则处理一下,看一下这个函数吧
int loginoperatebuf(char * buf,char * filename) {
FILE *stream;
char cmd[500];

memset(cmd, '\0', 500);
//由于是script录制的登录文件中包含了一些其他信息,例如回车、换行、字符颜色、退格等操作符,所以需要处理一下
sprintf(cmd, "sed -r -e \"s/\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g\" -e \"s/.*\\x1B\\[C/\\[\\]/g\" -e \"s/.*\\x1B\\[K/\\[\\]/g\" -e \"{:a;s/.\\x08//;ta}\" %s",filename); //sed正则
memset(buf, '\0', 10000);
stream = popen(cmd, "r");
fread(buf, sizeof(char), 10000, stream);
pclose(stream);
return 0;
}
kimsung 2018-09-19
  • 打赏
  • 举报
回复
都是换行符, 去掉换行符。 sed "s/^M\|^G//g" sourcefile > targetfile 这里^M和^G知道怎么打吧?
kimsung 2018-09-19
  • 打赏
  • 举报
回复
哦, sorry,应该转换成换行符, 这个要根据你的os。 mac \r unix \n windows \r\n
ckc 2018-09-18
  • 打赏
  • 举报
回复
多出的是改变颜色的控制字符吧 如果你自己写程序处理的话,可以把0x1b,0x5b开始,0x6d结束的部分去掉试下
truetempus 2018-09-18
  • 打赏
  • 举报
回复
引用 1 楼 qq_36751214 的回复:
直接把这个文件cat * >a.log 然后再传a.log 就可以了 。

你这个方法我早就试过了,答案是不行的。。。
金秋枣香 2018-09-17
  • 打赏
  • 举报
回复
直接把这个文件cat * >a.log 然后再传a.log 就可以了 。
?12???? 2018-09-17
  • 打赏
  • 举报
回复
直接把这个文件cat * >a.log 然后再传a.log 就可以了 。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧