2009年4月29日

|EasyScripts|用GMail从控制台发送邮件的脚本


有时候需要备份些东西到邮箱,能够让脚本定时自动运行当然是最好!
抽时间用python写了这么个脚本,使用python-libgmail库 ( sudo apt-get install python-libgmail )

发送邮件的代码都是现成的调用,主要是在易用性上做了些优化:

1、发送一句话,不需要正文,比如给邮件列表发个“求助。。。。。(如题)”之类的:
    msend -t  list@domain.com  -s "求助,图形界面进不了,哈哈”

2、发个文件到自已的邮箱,一般用 -f "file1;file2;file3;dir2;dir3" ,发懒的时候不写 -f 也能用
    msend -t my@gmail.com -f readme.txt
    msend -t my@gmail.com  *.txt

3、发个文件或目录到某个邮箱,需要ZIP一下,(当然2和3可以混用)
    msend -t friend@domain.com  -z  ./pics/

基本上:
1、目标邮箱和主题必须写上;
2、如果有文件附件,可以不指定主题,脚本会把文件数当主题名(gmail的title里会显示正文的)
3、程序会自动判断文件和目录,如果是目录就会遍历
4、不管是文件还是目录,如果前缀指定了-z,就压缩后发送
5、没有前缀的参数一律当文件名

如果有需要,可以下载玩玩,运行msend不带参数就有用法,应该很明白了。

(还有什么稀奇古怪的想法?欢迎提出来!)


    Usage:
        msend -t user@domain.com -s title
        msend -t user@domain.com {-s title | -f file | -z file}

    Full command:
        msend --to=user@domain.com --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"]

    Example: ( edit ~/.msend for default sender account )
        msend -t user@domain.com -s "just a test"
        msend -t user@domain.com -s "send all pic" -f ./mypics/
        msend -t user@domain.com -s "send files as zip" -z ./mytext/
        msend -t user@domain.com -s "send both" -f mytext -z mytext


附件下载和更新在: https://groups.google.com/group/binsos/browse_thread/thread/1362719b1a34cd9b

2009年4月9日

Linux下有线和无线网络共存时优先使用无线网

用Linux下的NetworkManager 0.70(网络管理器小程序)遇到个问题:无线网络和有线网络同时启用时,系统默认优先使用有线网络--即默认路由使用的是有线网络的。
写了一个脚本解决这个问题,无线网卡和有线网卡同时启用时,优先使用无线路由器的网关。
代码如下:
------------------------------------
#!/bin/bash
# /etc/dhcp3/dhclient-exit-hooks.d/wireless-gw
# /etc/network/if-up.d/wireless-gw

WIRELESS=`iwconfig 2>/dev/null| awk 'NR==1 {print $1}'`
[ -z "$WIRELESS" ] && exit 0

gw=`ip addr show dev $WIRELESS | grep "inet " | awk 'NR==1 {print $2}'`
[ `echo $gw | awk -F. '{print NF}'` -ne 4 ] && exit 0

gw=`echo $gw | awk -F. '{printf("%s.%s.%s.1",$1,$2,$3)}'`

while [ `ip route | grep ^default | wc -l` -gt 0 ]
do
ip route delete default
done
ip route add default via $gw

#echo nameserver $gw > /etc/resolv.conf
echo nameserver 8.8.8.8 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf

------------------------------------
脚本先取到无线网络设备名,依照设备名取到IP地址,然后假设无线路由地址是该IP段的第一个IP号,即xxx.xxx.xxx.1(通常无线AP都这样用的,暂时没有其它更好的办法),最后删除错误的默认路由,将无线网络的网关当作默认路由。
最后一句是修正DNS,如果DNS工作正常,可以去掉。
写好后放到/etc/network/if-up.d/ 和 /etc/dhcp3/dhclient-exit-hooks.d/下,命名为wireless-gw,赋执行权限。
(Ubuntu8.10下使用正常,其它发行版安放目录可能会有差异)

难道ubuntu里面就没有考虑这个问题?很奇怪!