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的情况,以测试好的解决方案。

insecure_pssh:支持密码列表的并行ssh

pssh(parallel-ssh)是linux系统管理员比较熟悉的一款并行ssh工具,很好用,但是却需要提前在各个服务器上配置好密钥认证访问。我本身不是很喜欢这种操作,对此我对这个项目进行了一些修改,让这个工具支持保存在管理机中的密码列表。