有没有办法让 rlwrap 自动删除历史文件?
Is there a way to have rlwrap automatically delete history files?
我正在使用 rlwrap 在 linux 服务器上向 sqlplus/rman/etc 提供命令历史记录。我可以看到正在生成诸如 .sqlplus_history 之类的命令历史文件,因为这些是可能包含密码的纯文本文件,例如如果用户在 sqlplus 中输入 'connect username/password',则无限期保留它们存在安全风险。
是否有比定期删除日志的某种 cron 作业更简单的方法?
我希望某些类型的关键字会触发删除日志,例如如果 'exit' 或 'quit' 命令被读取用户离开 sqlplus 和 .sqlplus_history 日志被删除。这样的事情可能吗?
rlwrap
有很多选项可以让命令行不在历史列表中(因此不在历史文件中),尽管不完全按照你描述的方式(我觉得这没什么用)
rlwrap --forget-matching connect sqlplus
不会记住任何包含字符串 connect
的输入行
- 指定negative 历史大小,如
rlwrap --histsize -3000
会将历史文件视为只读(密码仍会在历史中可见,但它会不写入文件)
- 输入带有
CTRL+O
的行将使该特定行不在历史列表中。 (此操作可以重新绑定到另一个键,请参阅联机帮助页)
对于一个非常奇特的密码检查器,可以像这样编写一个过滤器censor_passwords
:
#!/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+)/ xXxXxXxX/ig; $_});
$filter -> run;
.. 然后像 rlwrap -z censor_passwords sqlplus
一样使用它。
任何包含 IDENTIFIED BY yd6e7#te6
的输入将被记住为 IDENTIFIED BY xXxXxXxX
我正在使用 rlwrap 在 linux 服务器上向 sqlplus/rman/etc 提供命令历史记录。我可以看到正在生成诸如 .sqlplus_history 之类的命令历史文件,因为这些是可能包含密码的纯文本文件,例如如果用户在 sqlplus 中输入 'connect username/password',则无限期保留它们存在安全风险。
是否有比定期删除日志的某种 cron 作业更简单的方法?
我希望某些类型的关键字会触发删除日志,例如如果 'exit' 或 'quit' 命令被读取用户离开 sqlplus 和 .sqlplus_history 日志被删除。这样的事情可能吗?
rlwrap
有很多选项可以让命令行不在历史列表中(因此不在历史文件中),尽管不完全按照你描述的方式(我觉得这没什么用)
rlwrap --forget-matching connect sqlplus
不会记住任何包含字符串connect
的输入行
- 指定negative 历史大小,如
rlwrap --histsize -3000
会将历史文件视为只读(密码仍会在历史中可见,但它会不写入文件) - 输入带有
CTRL+O
的行将使该特定行不在历史列表中。 (此操作可以重新绑定到另一个键,请参阅联机帮助页)
对于一个非常奇特的密码检查器,可以像这样编写一个过滤器censor_passwords
:
#!/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+)/ xXxXxXxX/ig; $_});
$filter -> run;
.. 然后像 rlwrap -z censor_passwords sqlplus
一样使用它。
任何包含 IDENTIFIED BY yd6e7#te6
的输入将被记住为 IDENTIFIED BY xXxXxXxX