IPython:如何有选择地擦除IPython的历史记录安全?

时间:2013-10-26 11:43:04

标签: ipython ipython-notebook

我一直在学习如何使用paramiko包来发现我在IPython %hist中以纯文本形式存储的所有密码。不太好。

因此,我需要摆脱%hist中存储内容的特定部分。说,我不想擦除整个历史记录。 - 只有我不小心输入password =或类似选择条款的部分。

感谢


评论我不需要:

  • %clear仅清除会话。它没有抹去历史。
  • 是。从现在开始我只会使用xSA_keys。

6 个答案:

答案 0 :(得分:32)

默认情况下,历史记录存储在$(ipython locate)/profile_default/history.sqlite上。 您可以删除文件,或者对其执行任何操作(安全擦除等)。 它是一个sqlite文件,因此您可以使用任何sqlite程序加载它并对其进行查询。

签入$(ipython locate)/profile_default/和其他$(ipython locate)/profile_xxx您没有任何其他历史记录文件。 $(ipython locate)通常为~/.ipython/,但可以有所不同:

ls $(ipython locate)/profile_*/*.sqlite

答案 1 :(得分:16)

一种解决方案是:

sqlite ~/.ipython/profile_default/history.sqlite

delete from history where source like '%password =%';

答案 2 :(得分:2)

@Ovidiu Ghinetanswer@Mattaccepted answer组合:

sqlite $(ipython locate)/profile_*/*.sqlite || sqlite3 $(ipython locate)/profile_*/*.sqlite

然后在sqlite控制台中:

delete from history where source like '%password%';
select * from history; /* confirm that no passwords left        */
.quit                  /* forgot how to exit sqlite console? ;) */

答案 3 :(得分:0)

如果您完全想从头开始,只需手动删除以下文件(对我有用)

/home/user/.ipython/profile_default/history.sqlite

答案 4 :(得分:0)

我找不到选择性地擦除IPython历史记录的方法,但是我发现了如何通过内置的func,非sqlite方法擦除数据:

%清除#清除输出历史记录

顺便说一句,您还可以通过%clear in清除历史记录

答案 5 :(得分:0)

如果要从特定会话中删除历史记录,请运行:

sqlite ~/.ipython/profile_default/history.sqlite

内部SQLite:

select * from history;
# session is the first column in history
delete from history where session=XXX;