云中的命令行历史

cmdhist的Python项目详细描述


现在的情况是这样的:
==
CMDHist:永远不要再丢失历史记录
=====br======br==

**CMDHist**将命令行历史记录**安全地**存储在云中,以便快速方便地访问任何地方。
这就是它的工作原理:

*运行**CMDHistd**守护程序,注册/l通过命令行登录到服务器。
*一旦登录,守护进程将跟踪~/.bash_history,并在您输入命令时将命令安全地通过*https*发送到服务器。
*如果您使用多台计算机,请在每台计算机中运行**cmdhistd**守护进程,以您自己的身份登录。它会自动合并所有的历史,所以你永远不会失去任何东西。不会从服务器中删除任何内容。
*运行**cmdhist**命令访问您的历史记录。这意味着要替换标准的*history*命令。使用高级搜索选项。


您可以像这样安装它::

$pip install cmdhist

这使您可以访问两个二进制文件::

$cmdhist.py守护进程。必须运行此命令才能注册/登录并获取令牌。
$cmdhist.py客户端。运行此命令以获取/搜索历史记录。


快速启动
===
::


$cmdhistd

按照提示注册/登录。一旦成功登录,守护进程将开始存储命令。

(强烈建议)要确保命令一输入就被存储,请在~/.bashrc中设置此选项:

$export prompt\u command='history-a'
$source~/.bashrc



$CmdHist显示所有历史记录
$CmdHist--二进制ls显示所有*ls*历史记录

这安全吗?
=====


绝对!这就是我们的安全机制:

*所有与服务器的通信都通过https进行。
*您的uid和密码通过https发送到服务器,服务器返回一个令牌。注册时将为您生成唯一的32字节salt。
*在客户端,此salt与明文密码一起用于生成256位密钥,以便使用AES256加密对您的历史进行加密。您的命令以加密形式发送到服务器。
*此256位密钥从未存储在服务器上。
*您的密码从未以明文形式存储在服务器上。我们使用bcrypt加密来存储它。因此,如果不知道明文密码和32字节的salt,我们或任何人都无法读取您的历史记录。

*此令牌将存储在$home/cmdhist目录中。**请将此令牌保密!**
*所有进一步的通信都是通过https进行的,在头中有这个令牌。
*服务器自动将令牌解析到您的帐户,并存储您的历史记录。

简而言之,安全性是零知识——灵感来自spideroak。没有人可以读取您的历史记录,因为它在客户端被加密和解密。这也意味着,如果您丢失密码,您将无法访问您的历史记录。

如果您丢失密码,您的客户端将无法访问或解密您的历史记录。所以,请务必记住您的密码!
*安装程序分布在客户端和服务器之间。这个包是客户端,它运行在您的机器上,并且是开源的。但是,服务器不是。


有关服务器的更多信息
对于大多数人来说,这个服务器应该按预期运行。从澳大利亚来,查询我的历史只需不到一秒钟,大部分时间都花在了网络rtt上。但是,如果你对你的表现不满意,请告诉我。事实上,请随时提出任何问题或错误,以便我解决它们。

或者要将数据保存在网络中,则必须自己实现服务器。我当然可以提供指导。不管我是否能帮上忙,我绝对对了解你的用例感兴趣,所以给我发一封邮件。


已知问题如果你失去了密码,你就失去了你的历史!
*我在Bitbucket中打开了问题跟踪程序。所以,把你的问题归档吧。


在ubuntu 14.04.1桌面上用python 2.7.6进行了测试。
*也在docker 1.5.0版上进行了测试。
*在macbook pro:darwin kernel 14.1.0版上进行了测试。OSX优胜美地。
*没有在Windows上测试。

==
*我的命令没有被接收。发生什么事?
最常见的问题可能是您忘记设置以下内容:

$export prompt_command='history-a'
$source ~/.bashrc

wever,设置好了,然后尝试ps aux grep tail,并终止tail进程。删除~/cmdhist/.lock文件,然后重新运行cmdhistd.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用唯一的按钮标签单击按钮   代码生成如何使用Java codeModel为数组的特定索引赋值   java如何批量执行Camel SQL插入   java iText 7将ltv添加到现有签名   内存管理Java应用程序突然停止几天后(810)   带MySQL的java注册表单JavaFX在intellij中失败   如何使用eclipse为windows azure java项目启用远程调试   一种通用的java输入输出设计模式   java Android XML(RSS)忽略引号(“”)   java帮助:安卓中的8 X 10 2维按钮数组   java启动Android项目   JWrapper构建java应用程序   java如何在Android应用程序中设置基于日期/时间的默认页面加载?   java循环程序在完成后返回到起点   java Hibernate:更好的整体类还是多类映射?   回溯数独解算器的递归问题[Java]   java查找类用法   java如何在SpringWebFlow中将多个模型绑定到一个视图?