首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以让rlwrap自动删除历史文件?

有没有一种方法可以让rlwrap自动删除历史文件?
EN

Stack Overflow用户
提问于 2015-07-27 17:37:04
回答 1查看 1.4K关注 0票数 1

在linux服务器上,我使用rlwrap将命令历史赋予sqlplus/rman/etc。我可以看到生成命令历史文件(如.sqlplus_history ),因为这些都是可能包含密码的纯文本文件,例如,如果用户在sqlplus中输入“connect/password”,则无限期保存它们存在安全风险。

有没有一种更简单的方法比某种cron作业定期删除日志呢?

我希望找到某种类型的关键字来触发日志的删除,比如“退出”或“退出”命令被读取,用户离开sqlplus,.sqlplus_history日志被删除。有可能发生这种事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 11:10:19

rlwrap有许多选项可以将命令行排除在历史记录列表之外(因此也不包括历史文件),尽管并不完全按照您所描述的方式(无论如何,我并不认为这是有用的)。

  • rlwrap --forget-matching connect sqlplus将不记得任何包含字符串connect的输入行。
  • 指定负历史记录大小(如rlwrap --histsize -3000 )将历史文件视为只读(密码在历史记录中仍然可见,但不会写入文件)。
  • 使用CTRL+O输入一行将使这条特定行不被列入历史记录列表。(此操作可以重新绑定到另一个键,请参阅手册)

对于一个非常花哨的密码审查器,可以编写如下过滤器censor_passwords

代码语言:javascript
复制
#!/usr/bin/env perl

use lib ($ENV{RLWRAP_FILTERDIR} or ".");
use RlwrapFilter;
use strict;

my $filter = new RlwrapFilter;

$filter -> help_text("This filter removes the password from SQL 'identified by' clauses\n");

$filter -> history_handler(sub { s/(identified\s+by\s+)(\S+)/$1 xXxXxXxX/ig; $_});

$filter -> run;

。。然后像rlwrap -z censor_passwords sqlplus一样使用它。

任何包含IDENTIFIED BY yd6e7#te6的输入都将被记为IDENTIFIED BY xXxXxXxX

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31659680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档