Jul 22

转自:http://hctan.blog.163.com/blog/static/14033200611258057438/

#!/usr/bin/python

import os

command = "wget http://news.163.com"
print os.system(command); 
Jul 22

尽管Tiny Tiny RSS可以搞定大部分网站的RSS全文问题,仍有部分不能搞定,这时就可以使用Yahoo Pipes来获取全文。

1.在 Yahoo Pipes 里新建一个 pipe
拖入一个 Fetch Feed 模块,输入网站的 rss 地址
拖入一个 Loop 模块,与 Fetch Feed 连接

2.拖一个 Fetch Page 模块进入 Loop
设置 URL 为 item.link
读取内容从 div class=”EntryBody” 到 /div
指定所有结果为 item.temp

3.拖入一个 Rename 模块,与 Loop 连接
将 item.temp.0.content 重命名为 content:encoded

4.将 Rename 连接到 Pipe Out,保存

主要的流程图如下:

参考:http://jandan.net/2008/11/15/yahoo-pipes.html

Apr 05

Wget的常用参数
-b:后台下载,Wget默认的是把文件下载到当前目录。
-O:将文件下载到指定的目录中。
-P:保存文件之前先创建指定名称的目录。
-t:尝试连接次数,当Wget无法与服务器建立连接时,尝试连接多少次。
-c:断点续传,如果下载中断,那么连接恢复时会从上次断点开始下载。

启动:

-V, --version 显示 Wget 的版本并且退出。  
-h, --help 打印此帮助。  
-b, -background 启动后进入后台操作。  
-e, -execute=COMMAND 运行'.wgetrc'形式的命令。 

日志记录及输入文件:

-o, --output-file=文件 将日志消息写入到指定文件中。  
-a, --append-output=文件 将日志消息追加到指定文件的末端。  
-d, --debug 打印调试输出。  
-q, --quiet 安静模式(不输出信息)。  
-v, --verbose 详细输出模式(默认)。  
-nv, --non-verbose 关闭详细输出模式,但不进入安静模式。  
-i, --input-file=文件 下载从指定文件中找到的 URL。  
-F, --force-html 以 HTML 方式处理输入文件。  
-B, --base=URL 使用 -F -i 文件选项时,在相对链接前添加指定的 URL。  

下载:

-t, --tries=次数 配置重试次数(0 表示无限)。  
--retry-connrefused 即使拒绝连接也重试。  
-O --output-document=文件 将数据写入此文件中。  
-nc, --no-clobber 不更改已经存在的文件,也不使用在文件名后添加 .#(# 为数字)的方法写入新的文件。  
-c, --continue 继续接收已下载了一部分的文件。  
--progress=方式 选择下载进度的表示方式。  
-N, --timestamping 除非远程文件较新,否则不再取回。  
-S, --server-response 显示服务器回应消息。  
--spider 不下载任何数据。  
-T, --timeout=秒数 配置读取数据的超时时间 (秒数)。  
-w, --wait=秒数 接收不同文件之间等待的秒数。  
--waitretry=秒数 在每次重试之间稍等一段时间 (由 1 秒至指定的 秒数不等)。  
--random-wait 接收不同文件之间稍等一段时间(由 0 秒至 2*WAIT 秒不等)。  
-Y, --proxy=on/off 打开或关闭代理服务器。  
-Q, --quota=大小 配置接收数据的限额大小。  
--bind-address=地址 使用本机的指定地址 (主机名称或 IP) 进行连接。  
--limit-rate=速率 限制下载的速率。  
--dns-cache=off 禁止查找存于高速缓存中的 DNS。  
--restrict-file-names=OS 限制文件名中的字符为指定的 OS (操作系统) 所允许的字符。 

目录:

-nd --no-directories 不创建目录。  
-x, --force-directories 强制创建目录。  
-nH, --no-host-directories 不创建含有远程主机名称的目录。  
-P, --directory-prefix=名称 保存文件前先创建指定名称的目录。  
--cut-dirs=数目 忽略远程目录中指定数目的目录层。  

HTTP 选项:

--http-user=用户 配置 http 用户名。  
--http-passwd=密码 配置 http 用户密码。  
-C, --cache=on/off (不)使用服务器中的高速缓存中的数据 (默认是使用的)。  
-E, --html-extension 将所有 MIME 类型为 text/html 的文件都加上 .html 扩展文件名。  
--ignore-length 忽略“Content-Length”文件头字段。  
--header=字符串 在文件头中添加指定字符串。  
--proxy-user=用户 配置代理服务器用户名。  
--proxy-passwd=密码 配置代理服务器用户密码。  
--referer=URL 在 HTTP 请求中包含“Referer:URL”头。  
-s, --save-headers 将 HTTP 头存入文件。  
-U, --user-agent=AGENT 标志为 AGENT 而不是 Wget/VERSION。  
--no-http-keep-alive 禁用 HTTP keep-alive(持久性连接)。  
--cookies=off 禁用 cookie。  
--load-cookies=文件 会话开始前由指定文件载入 cookie。  
--save-cookies=文件 会话结束后将 cookie 保存至指定文件。  
--post-data=字符串 使用 POST 方法,发送指定字符串。  
--post-file=文件 使用 POST 方法,发送指定文件中的内容。   

HTTPS(SSL)选项:

--sslcertfile=文件 可选的客户段端证书。  
--sslcertkey=密钥文件 对此证书可选的“密钥文件”。  
--egd-file=文件 EGD socket 文件名。  
--sslcadir=目录 CA 散列表所在的目录。  
--sslcafile=文件 包含 CA 的文件。  
--sslcerttype=0/1 Client-Cert 类型 0=PEM (默认) / 1=ASN1 (DER)  
--sslcheckcert=0/1 根据提供的 CA 检查服务器的证书  
--sslprotocol=0-3 选择 SSL 协议;0=自动选择,  
1=SSLv2 2=SSLv3 3=TLSv1   

FTP 选项:

-nr, --dont-remove-listing 不删除“.listing”文件。  
-g, --glob=on/off 设置是否展开有通配符的文件名。  
--passive-ftp 使用“被动”传输模式。  
--retr-symlinks 在递归模式中,下载链接所指示的文件(连至目录则例外)。 

递归下载:

-r, --recursive 递归下载。  
-l, --level=数字 最大递归深度(inf 或 0 表示无限)。  
--delete-after 删除下载后的文件。  
-k, --convert-links 将绝对链接转换为相对链接。  
-K, --backup-converted 转换文件 X 前先将其备份为 X.orig。  
-m, --mirror 等效于 -r -N -l inf -nr 的选项。  
-p, --page-requisites 下载所有显示完整网页所需的文件,例如图像。  
--strict-comments 打开对 HTML 备注的严格(SGML)处理选项。  

递归下载时有关接受/拒绝的选项:

-A, --accept=列表 接受的文件样式列表,以逗号分隔。  
-R, --reject=列表 排除的文件样式列表,以逗号分隔。  
-D, --domains=列表 接受的域列表,以逗号分隔。  
--exclude-domains=列表 排除的域列表,以逗号分隔。  
--follow-ftp 跟随 HTML 文件中的 FTP 链接。  
--follow-tags=列表 要跟随的 HTML 标记,以逗号分隔。  
-G, --ignore-tags=列表 要忽略的 HTML 标记,以逗号分隔。  
-H, --span-hosts 递归时可进入其它主机。  
-L, --relative 只跟随相对链接。  
-I, --include-directories=列表 要下载的目录列表。  
-X, --exclude-directories=列表 要排除的目录列表。  
-np, --no-parent 不搜索上层目录。 

转自:http://jiaxl.blog.51cto.com/3064605/1191196

Jul 03

TwiTalker支持在GAE上搭建Gtalk机器人,绑定Twitter帐户后就可以在Gtalk界面上操作Twitter帐户,基本上能满足要求,尤其适合于手机客户端。Twitter的API升级到1.1版本后,出现了不能发推的问题,以前TwiTalker的搜索不能使用的时候一直懒的上传代码,现在终于有理由重新上传了。

我在TwiTalker的官网提交了一个Issues,不久就收到了作者的更新。由于Google Code的政策的变化,作者没有将修改后的代码上传至Google Code只是给出了更新代码,下载地址为dropbox共享。将下载后的代码下载替换了原文件夹的四个文件重新上传就可以了。

主要的更新可以参见作者的博客:http://lordong.pw/wp/post/1396.html

Aug 20

以前一直想使用两个一模一样的硬盘组件磁盘阵列来备份重要资料,尽管主板支持简单的Raid 0和1两种,我只需要使用Raid 1,但是如果系统出现问题需要从磁盘阵列中恢复资料就很麻烦,所以我还是决定在两块磁盘中各放一份,这样的话可以便于将硬盘拆下来挂在其他主机上。Google了一下,Rsync软件能够满足实际的要求,来实现文件夹的同步更新。

以下内容转自:http://y.jmeye.com/index.php?aid=543

1.1 软件简介

Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。

Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。

1.2 基本特点

Rsync的基本特点如下:
1.可以镜像保存整个目录树和文件系统;
2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
3.无须特殊权限即可安装;
4.优化的流程,文件传输效率高;
5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6.支持匿名传输。

1.3 命令语法

rsync的命令格式可以为以下六种:

rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST
rsync [OPTION]… [USER@]HOST::SRC DEST
rsync [OPTION]… SRC [USER@]HOST::DEST
rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]

对应于以上六种命令格式,rsync有六种不同的工作模式:
1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。
2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。
3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。
4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。
5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。
6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

1 同步本机文件测试

rsync –help

你可以看到很多参数,选择自己觉得需要的参数即可。

先测试一下本机同步:

rsync -vzrtopgu –progress /Data/scripts/ /tmp/back_srcipt/

会看到文件在传输,再运行一次,就知道没有运行复制,因为文件没有修改过

增加文件测试:

touch /Data/scripts/test.txt

再运行上面的脚本就可以看到把这个新文件传输过去了,没有复制别的文件。

2 服务器间同步文件

要在服务器间rsync传输文件,需要有一个是开着rsync的服务,而这一服务需要一个配置文件,说明当前运行的用户名和用户组,这个用户名和用户组讲在改变文件权限和相关内容的时候有用,否则有时候会出现提示权限问题。配置文件也说明了模块,模块化管理服务的安全性,每个模块的名称都是自己定义的,可以添加用户名密码验证,也可以验证IP,设置目录是否可写等。

vi /etc/rsyncd.conf

uid=root
gid=root
#这里指定的用户名和用户组是root,权限过高了,出于安全考虑可以用别的

[web_aslibra]
# 这里是认证的模块名,在client端需要指定
path = /Data/webapps/www.aslibra.com/
# 需要做镜像的目录
comment = test
ignore errors
# 可以忽略一些无关的IO错误
read only = yes
# 只读,如果是no,则可以从client发送文件到此服务器
list = no
# 不允许列文件
auth users = aslibra
# 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/rsyncd.pass
# 认证文件名

[web_aslibra_public]
path = /Data/webapps/www.aslibra.com/
ignore errors
read only = yes
list = no

[web_aslibra_write]
path = /Data/webapps/www.aslibra.com/
ignore errors
read only = no
hosts allow = 192.168.1.2
list = no

服务启动方式:

/Data/apps/rsync/bin/rsync –daemon

第一个模块,用户验证方式,需要指定用户名密码:

在/etc/下新建一文件rsyncd.pass

#vi /etc/rsyncd.pass
aslibra:aslibra.com

一行一个用户,用户名:密码

修改rsyncd.pass权限

chmod 600 /etc/rsyncd.pass

此步省略会导致rsync无法启动

客户端也需要有密码文件,当然路径可以不一样

rsync -rvlHpogDtS –progress –password-file=/etc/rsyncd.pass [email protected]::web_aslibra /tmp/aslibra.com/

我有时候总是验证不对,不知道是否两个服务器间版本有差异的问题

第二个模块是没有验证的情况,都可读

rsync -rvlHpogDtS –progress [email protected]::web_aslibra_public /tmp/aslibra.com/

第三个是验证ip,而且可写

发送文件很简单,把后面两个参数反过来就可以,拿上一个例子

rsync -rvlHpogDtS –progress /tmp/aslibra.com/ [email protected]::web_aslibra_public

这样会提示出错,因为web_aslibra_public是只读的

rsync -rvlHpogDtS –progress /tmp/aslibra.com/ [email protected]::web_aslibra_write

这样就可以了,但要看从哪个IP来的了,否则也失败

下面是摘录的一些详细的参数说明:

rsyncd.conf参数
uid
该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是”nobody”。
gid
该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为”nobody”。
exlude
用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用–exclude来指定模式,不过配置文件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用”-”和”+”来指定是exclude还是include。
但是需要注意的一点是该选项有一定的安全性问题,客户很有可能绕过exlude列表,如果希望确保特定的文件不能被访问,那就最好结合uid/gid选项一起使用。
exlude from
指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exlude列表定义。
include
用来指定多个由空格隔开的多个rsync并应该exlude的模式列表。这等同于在客户端命令中使用–include来指定模式,结合include和exlude可以定义复杂的exlude/include规则。一个模块只能指定一个include选项,但是可以在模式前面使用”-”和”+”来指定是exclude还是include。
include from
指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。
auth users
该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果”auth users”被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在”secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
secrets file
该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个。(例如:/etc/rsyncd.secrets)
strict modes
该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true。
hosts allow
该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式:
o xxx.xxx.xxx.xxx,客户主机只有完全匹配该IP才允许访问。例如:192.167.0.1
o a.b.c.d/n,属于该网络的客户都允许连接该模块。例如:192.168.0.0/24
o a.b.c.d/e.f.g.h,属于该网络的客户都允许连接该模块。例如:192.168.0.0/255.255.255.0
o 一个主机名,客户主机只有拥有该主机名才允许访问,例如:backup.linuxaid.com.cn。
o *.linuxaid.com.cn,所有属于该域的主机都允许。
默认是允许所有主机连接。
hosts deny
指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义

ignore errors
指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IP错误,一般来说rsync在出现IO错误时将将跳过–delete操作,以防止因为暂时的资源不足或其它IO错误导致的严重问题。
ignore nonreadable
指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的

客户端同步命令
v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息

rsync foo/bar/foo.c remote:/tmp/

则在/tmp目录下创建foo.c文件,而如果使用-R参数:

rsync -R foo/bar/foo.c remote:/tmp/

则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。

-b, –backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项来指定不同的备份文件前缀。
–backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, –links 保留软链结
-L, –copy-links 想对待常规文件一样处理软链结
–copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
–safe-links 忽略指向SRC路径目录树以外的链结
-H, –hard-links 保留硬链结
-p, –perms 保持文件权限
-o, –owner 保持文件属主信息
-g, –group 保持文件属组信息
-D, –devices 保持设备文件信息
-t, –times 保持文件时间信息
-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, –dry-run现实哪些文件将被传输
-W, –whole-file 拷贝文件,不进行增量检测
-x, –one-file-system 不要跨越文件系统边界
-B, –block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, –rsh=COMMAND 指定替代rsh的shell程序
–rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, –cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
–existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
–delete 删除那些DST中SRC没有的文件
–delete-excluded 同样删除接收端那些被该选项指定排除的文件
–delete-after 传输结束以后再删除
–ignore-errors 及时出现IO错误也进行删除
–max-delete=NUM 最多删除NUM个文件
–partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
–force 强制删除目录,即使不为空
–numeric-ids 不将数字的用户和组ID匹配为用户名和组名
–timeout=TIME IP超时时间,单位为秒
-I, –ignore-times 不跳过那些有同样的时间和长度的文件
–size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
–modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T –temp-dir=DIR 在DIR中创建临时文件
–compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 –partial
–progress 显示备份过程
-z, –compress 对备份的文件在传输时进行压缩处理
–exclude=PATTERN 指定排除不需要传输的文件模式
–include=PATTERN 指定不排除而需要传输的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
–include-from=FILE 不排除FILE指定模式匹配的文件
–version 打印版本信息
–address 绑定到特定的地址
–config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
–port=PORT 指定其他的rsync服务端口
–blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
–progress 在传输时现实传输过程
–log-format=formAT 指定日志文件格式
–password-file=FILE 从FILE中得到密码
–bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, –help 显示帮助信息