Tag: Summary

  • 用Mutt发送带附件的邮件

    请提前设置好MTA(mail transfer agent),例如:

    debian默认的MTA为exim4的设置为http://jpuyy.com/2011/08/debian-exim4.html

    mutt – The Mutt Mail User Agent

    示例:

    /usr/bin/mutt -s “the mp3 push” [email protected] -a /root/getvoa/latestvoa.mp3 < /dev/null

    最有用的还是这个 -a 附件发送,因为用mail和uuencode发送mp3都不理想

    用/dev/null意思是不输入正文,如果没有 </dev/null 则会自动调用nano

    介面简单而实用

    我的目的是每天自动把某网页更新的voa听力发送到我的邮箱内

    #!/bin/bash
    #for use:get voa mp3 every day
    #author: 2011-08-28 jpuyy.com
    #version: A
    yes | rm `cat latestvoa`
    LANG=C
    theday=`date ‘+%A’`
    urlone=http://www.51voa.com/VOA_Special_English/VOA_News_$theday.html
    urltwo=`/usr/bin/curl $urlone | grep Player`
    urltwo=${urltwo#*\”}
    urlthree=http://down.51voa.com${urltwo%%\”*}
    filename=${urlthree##*\/}
    echo $filename > latestvoa
    wget $urlthree
    /usr/bin/mutt -s “$theday mp3 push” [email protected] -a /root/getvoa/$filename < echo $filename

    保存为 getvoa.sh 这样每天的18点运行脚本

    0 18 * * * /root/getvoa/getvoa.sh

     

  • debian exim4配置发邮件|日志的魔力

    linux就是好,日志对于解决问题有绝对的魔力

    像神奇魔棒,直指要点

    很多天以前就配了一下exim4,发邮件测试一下没收到,用的不多也没有继续弄

    现在用的到了,所以耐下心弄了一下

    exim4重新配置命令

    dpkg-reconfigure exim4-config

    邮件系统设置的常见类型:互联网站;直接通过 SMTP 发送或接收信件
    系统邮件名称:(注意,一定要填一个能解析的域名,我就是在这吃了亏): xxx.com
    要监听入站 SMTP 连接的 IP 地址:(留空)
    其它可接收邮件的目的地址:localhost.localdomain:xxx.com
    为下列域名进行邮件中转 (relay):(留空)                   │
    为下列主机进行邮件中转 (relay):(留空)
    保持最小 DNS 查询量吗 (按需拔号,Dial-on-Demand)?<否>
    本地信件的投递方式:/var/mail/ 中的 mbox 格式
    将设置文件分拆成小文件吗?<否>

     

    回头说上面的系统邮件名称,有vps的最好是填上你的域名,这样就不会被收件(比如说163)拦截了

    当时发信不成功时,先去看一下发信日志,已经277M了,处理这个先放到后面,先说发信失败。

    This message was created automatically by mail delivery software.

    A message that you sent could not be delivered to one or more of its
    recipients. This is a permanent error. The following address(es) failed:

    [email protected]
    SMTP error from remote mail server after MAIL FROM:<xxx@debian>:
    host 163mx02.mxmail.netease.com [220.181.12.73]:
    550 MI:IMF mx23,ScCowGCJ2VFen1xOnm2kAQ–.1082S2 1314692958 http://mail.163.com/help/help_spam_16.htm?ip=58.216.234.50&hostid=mx2
    3&time=1314692958

    错误代码:550 MI:IMF

    打开后面的网址,找到解释:

    550 MI:IMF 发信人电子邮件地址不合规范。请参考http://www.rfc-editor.org/关于电子邮件规范的定义;

    所以问题出在域名上,改好域名,问题解决

    看来出问题先找日志是解决问题的绝佳办法

    Exim4的log记录使用自己的log目录:/var/log/exim4/

    update-exim4.conf的配置文件为 : /etc/exim4/update-exim4.conf.conf

    发送邮件的域名保存在: /etc/mailname

    测试Exim4的配置信息和查看有否有错:exim4 -bV

    有的时候可能会遇到exim4抛出debian ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken错误的情况,可以用以下方法加以解决。
    1、停止exim4 # /etc/init.d/exim4 stop
    2、删除paniclog文件 # rm /var/log/exim4/paniclog
    3、启动exim4 # /etc/init.d/exim4 start

  • debian svn的commit邮件提醒

    最基础简单的配置

    设置全部在/var/svnroot/工程/hooks/里面进行

    如我的是/var/svnroot/nginxsub/hooks/

    准备好三个文件

    mailer.conf //邮件设置文件
    post-commit
    mailer.py

    其中post-commit mailer.py是可执行文件,依据经验,必然主要改mailer.conf 即可

    三个文件得到的方式

    cp /usr/share/subversion/hook-scripts/mailer/mailer.conf.example /var/svnroot/nginxsub/hooks/mailer.conf
    yes | cp post-commit.tmpl post-commit
    cp /usr/share/subversion/hook-scripts/mailer/mailer.py /var/svnroot/nginxsub/hooks

    好,先修改一下post-commit 确定好mailer.py 和 mailer.conf的位置

    "$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/hooks/mailer.conf

    修改mailer.conf

    因为debian自带exim4为MTA 则在21 行处

    mail_command = /usr/sbin/exim4

    在174行处收件人地址

    to_addr [email protected]

    此时更改过版本将会第一时间发到你的邮箱里

    当然还有好多高级用法,下次学习实践了再更新

  • linux at命令实例一则

    明天学校早上8点停电

    办公室有debian的机器,但是现在还在使用,既然都接到了通知,让它断电是不合情理的

    计划明天早3点关机,现在22点钟

    于是执行命令

    # at now +5 hours
     warning: commands will be executed using /bin/sh
     at> /sbin/shutdown -h +0
     at> <EOT>
    job 1 at Fri Aug 26 03:06:00 2011

    那个EOF是组合键 ctrl+d

    at -l 或 atq查看要执行的任务和时间

    # at -l
     1       Fri Aug 26 03:06:00 2011 a root

     

    显示任务1的详细脚本,执行

    # at -c 1
     #!/bin/sh
     # atrun uid=0 gid=0
     # mail root 0
     umask 22
     SSH_CLIENT=10.49.180.5\ 1738\ 22; export SSH_CLIENT
     SSH_TTY=/dev/pts/5; export SSH_TTY
     USER=root; export USER
     LS_COLORS=no=00:fi=00:di=01\;34:ln=01\;36:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:su=37\;41:sg=30\;43:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.svgz=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.rar=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.aac=00\;36:\*.au=00\;36:\*.flac=00\;36:\*.mid=00\;36:\*.midi=00\;36:\*.mka=00\;36:\*.mp3=00\;36:\*.mpc=00\;36:\*.ogg=00\;36:\*.ra=00\;36:\*.wav=00\;36:; export LS_COLORS
     MAIL=/var/mail/root; export MAIL
     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; export PATH
     PWD=/root; export PWD
     LANG=zh_CN.UTF-8; export LANG
     PS1=\\h:\\w\\\$\ ; export PS1
     SHLVL=1; export SHLVL
     HOME=/root; export HOME
     LANGUAGE=zh_CN:zh; export LANGUAGE
     LS_OPTIONS=--color=auto; export LS_OPTIONS
     LOGNAME=root; export LOGNAME
     SSH_CONNECTION=10.49.180.5\ 1738\ xxx.xxx.xxx.xxx(ip地址)\ 22; export SSH_CONNECTION
     cd /root || {
     echo 'Execution directory inaccessible' >&2
     exit 1
     }
     /sbin/shutdown -h +0

    如果具体哪一天的话

    at 21:00 08/15/2012

    atrm 删除队列中的作业

    查看上次关机时间

    cat /var/log/messages | grep shutting
  • JavaScript学习摘抄

    在看从图书馆借的JavaScript学习指南 (美) Shelley Powers著

    javascript语言精粹

    JavaScript

    JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)

    两个正斜杠是 JavaScript 的注释符号,它会阻止 JavaScript 编译器对这一行的编译。

    多行注释以 /* 开头,以 */ 结尾。

    多用单行注释,不容易出错

    当页面载入时,会执行位于 body 部分的 JavaScript。

    当被调用时,位于 head 部分的 JavaScript 才会被执行。

    代码块以左花括号开始,以右花括号结束。

    代码块的作用是一并地执行语句序列。

    通过 var 语句来声明 JavaScript 变量,并且为局部变量

    变量是区分大小写的

    变量不要和javascript的关键字冲突

    多用匈牙利命名法

    多用小驼峰式命名法(lower camel case):第一个单字以小写字母开始;第二个单字的首字母大写,例如:firstName、lastName。

     

    首字母大写通常表示为类

     

    什么是cookie?

    cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

    坚持养成用分号结束的好习惯

    布尔值不需要引号,加引号”false”和不加false意义完全不同

    自已用起来方便的注释块

    /*

    author:jpuyy.com date:

    for use:
    modified by xx at date
    version:
    history:

    */

    Ajax程序库jQuery

     

  • ip别名(ip alias)设置和应用

    A.ip别名(ip alias)的设置和取消

    最近看到web虚拟主机实现的方式有两种,一是设置ip别名 二是在server{}里设置(常用)

    所以特地整理学习一下ip 别名的设置

    ip别名(ip alias)是Linux内核的一个标准功能

    设置:

    #/sbin/ifconfig eth0:0 219.219.219.219 broadcast 219.219.219.255 netmask 255.255.255.0 up

    检验:

    #/sbin/ifconfig

    取消:

    #ifconfig eth0:0 down

    eth0后的取值 0~255

    后面跟的ip如果是和eth0所在网的ip同一网段,则本网内全能ping通

    如果是乱跟一通,则只能本机测试之用,也没有多大的意义

    B.ip别名(ip alias)的应用

    1.充分利用有限的资源

    本来两台差劲的电脑分别跑着两个应用,ip当然不同

    来了一台新的高级的服务器,想同时迁移这两个程序到这台主机,ip别名便派上了用场

    2.服务不间段

    两台服务器,主服务器的提供某服务

    主服务器不用真实的ip来提供服务

    当主服务器坏了时候,副服务器可以直接ip别名设置好顶上来

     

    在淘宝买了一个差劲的vps

    ifconfig 以后发现ip别名:

    venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
    RX packets:1352 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1860 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:102537 (100.1 KiB)  TX bytes:1380885 (1.3 MiB)

    venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    inet addr:178.17.162.219  P-t-P:178.17.162.219  Bcast:0.0.0.0  Mask:255.255.255.255
    UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1