web-dev-qa-db-ja.com

IPython:IPythonの履歴を選択的かつ安全に消去する方法は?

私はparamikoパッケージを使用して、IPythonの%histにすべてのパスワードをプレーンテキストで保存したことを発見するためだけに、その方法を学んでいます。あまりよくない。

したがって、%histに格納されている特定の部分を取り除く必要があります。それを言って、私は全履歴を消去したくありません。 -password =または類似の選択した用語を入力するのに十分不注意であった部分のみ。

ありがとう


不要なコメント:

  • %clearはセッションのみをクリアします。履歴は消去されません。
  • はい。今後はxSA_keysのみを使用します。
29
root-11

履歴はデフォルトで$(ipython locate)/profile_default/history.sqliteに保存されます。ファイルを削除したり、ファイルに対して必要な操作(安全な消去など)を実行したりできます。これはsqliteファイルであるため、任意のsqliteプログラムでロードしてクエリを実行できます。

$(ipython locate)/profile_default/およびその他の$(ipython locate)/profile_xxxをチェックインして、他の履歴ファイルがないことを確認します。 $(ipython locate)は通常~/.ipython/が異なる場合があります:

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

1つの解決策は次のとおりです。

sqlite ~/.ipython/profile_default/history.sqlite

delete from history where source like '%password =%';
17
Ovidiu Ghinet

@ Ovidiu Ghinetanswer@ Matt の組み合わせ 受け入れられた回答

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? ;) */
2
hobs

特定のセッションから履歴を削除するには、次のコマンドを実行します。

sqlite ~/.ipython/profile_default/history.sqlite

SQLiteの内部:

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

最初から完全にしたい場合は、次のファイルを手動で削除してください(私にとってはうまくいきました)

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

0
Ankit