gpg使用外部密钥解密(不导入私钥和公钥)

使用gpg解密文件的常规做法是先导入自己的私钥和公钥,然后再用以下命令来解密:

gpg -o outputfile -d encryptfile

这种做法其实不很安全,当你在别人的机器上需要解密时怎么做?如果解密完成后忘记使用 gpg —delete-secret-keys 来删除密钥的话就可能会带来麻烦了。如果你习惯于在自己的U盘中或其他介质中携带自己的密钥,那么当你在其他电脑上需要解密的时候就需要用到以下的方法了: (windows下)如果你将自己的私钥secring.skr和公钥pubring.pkr放置于U盘根目录下,U盘插入电脑后盘符为F:,则可以这样来解密:

gpg --secret-keyring F:\secring.skr --keyring F:\pubring.pkr -o outputfile -d encryptfile

参数—secret-keyring和—keyring分别对应外部的私钥和公钥,这样就可以不必导入私钥和公钥就可以来解密文件了。

Lftp put: Access failed: 521 Data connections must be encrypted的解决方案

最近使用lftp工具通过ftps协议来传输数据,可以成功登录但传输文件时却会爆出如下的错误:

Lftp put: Access failed: 521 Data connections must be encrypted.

出现这样的问题是由于lftp需要通过配置才能用于传输ftps的数据。解决这个问题的方法很简单,在当前用户的主目录下的.lftp目录中创建rc文件,如:

/root/.lftp/rc

在该文件中写入以下配置项即可:

set ftp:ssl-protect-data true

当然也可以修改使用lftp的脚本,加上这条命令,如:

lftp -u user ftp.test.com -e “set ftp:ssl-protect-data true;put -a file;exit”

清除dmraid残留信息

近期遇到一个问题,一台服务器的一个sdb磁盘总会被LVM接管,无法自由按照分区来挂载,且在将此磁盘进行格式化的时候会提示磁盘正在被占用,无法直接格式化磁盘。对此在网上查找了相关的资料,发现问题可能是由于该磁盘带有dmraid的残留信息才造成的。

使用easy_install安装google protobuf

直接使用easy_install来安装google的protobuf可能遇到以下的问题:

error: Couldn’t find a setup script in /tmp/easy_install-9uwoys/protobuf-2.5.0.zip

可以使用以下的方法来直接安装:

easy_install —allow-hosts pypi.python.org protobuf

python获取进程池中运行的进程数量

使用python编程时,为了充分利用cpu资源,我们会用到multiprocessing模块来创建多个进程执行任务,当任务数量较多时,我们还可以创建一个进程池,将任务异步添加到池中。在一般情况下,我们提前知道了有多少个任务,可以在创建进程池后一次性将任务添加到进程池中。但是如果我们使用多台服务器来处理动态数量的任务,则可以定时获取进程池中正在运行的进程数量,以实现动态的管理。

在Mapreduce streaming中使用python第三方库

在使用streaming模式来运行自己编写的python mapreduce程序时,如果python脚本中包含有第三方的库,则会发现mr任务会运行失败,查看日志时通常会发现错误发生在程序无法找和import这个第三方库。此时需要在执行mr任务的命令行中进行一下小的调整,才可以解决问题。

用于测试生成segmentation fault的C代码

我不会写C,但是得用到C写的东西。比如最近的一个测试任务中,需要使用python来调用一个so,很自然就要使用ctypes模块。但是在测试的过程中,发现不定期会出现segmentation fault的情况,此时调用so的python脚本也会退出。这种段错误,python无法使用try来捕获,一旦发生,直接就会让python程序崩溃。由于源程序的崩溃只是随机的发生,找不到什么固定的规律,为了测试该问题,我只好自己在网上找点资料来写个测试的so文件,每次都产生segmentation fault的情况,以测试好的解决方案。