CentOS 6使用mutt+msmtp发送邮件

CentOS系统下如果希望向外域发送邮件,需要配置sendmail+dovecot等一系列工具。其实不用这么麻烦,只要mutt+msmtp就可以实现向外域发送邮件的功能了。本文基于CentOS6 64bit。

1,安装配置msmtp

$ yum install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel -y
$ wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2
$ tar -jxvf msmtp-1.4.32.tar.bz2
$ cd msmtp-1.4.32
$ ./configure --prefix=/usr/local/msmtp
$ cd msmtp-1.4.32
$ make && make install

$ mkdir /usr/local/msmtp/etc

生成配置文件

$ cat >>/usr/local/msmtp/etc/msmtprc<<EOF

直接复制以下内容粘贴在>号的位置即可 (more…)

Read More

shell之if语句常见错误

以下是一个错误的if语句

#!/bin/bash
oldversion=b3-cdrom
function test()
{
    if [ ! `df -h | grep $oldversion` ]; then
        echo found.
    fi
}
test

以下都是正确的:

#!/bin/bash
oldversion=b3-cdrom
function test()
{
    if [ ! "`df -h | grep $oldversion`" ]; then
        echo found.
    fi
}
test

加双引号引起来就正确了……

下面这个也是正确的:

#!/bin/bash
oldversion=3
function test()
{
    if [ ! $oldversion ]; then
        echo found.
    fi
}
test
Read More

批量下载Linux Kernel版本,并对本地的Kernel进行比较

自己写的一个批量下载Kernel.org版本,并对本地的Kernel进行比较的脚本。记录一下吧。

自己部门6年前维护的一个kernel版本,只知道是基于kernel 2.6版本,却不知道是基于2.6.x版的。于是乎,写了这么个脚本,批量把2.6.x的所有版本全部下载回来,使用diff一一进行比对(导出到conclusion/diff-2.6.x-and-k2.txt文件中),并将所有版本的diff结果进行分析,再将分析数据导出到conclusion/all.txt中。

在conclusion/all.txt中,第一列是diff时官方的版本号,第二列是diff结果(conclusion/diff-2.6.x-and-k2.txt)的行数。重点在于第二列,这些数字中最小的那一个所对应的版本号,应该就是我部门维护的kernel的详细版本号了。

#!/bin/bash
for i in `seq 0 39`
do
    echo donwloading https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.tar.bz2
    wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.tar.bz2
    for a in `seq 1 57`
    do
        echo downloading https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.$a.tar.bz2
        wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.$a.tar.bz2
    done
done

if [ ! -d conclusion ]; then
    mkdir conclusion
fi

for file in `ls linux-2.6.*.tar.bz2`
do
    dirname=${file%.tar*}
    version=${dirname##*-}
    echo $dirname
    echo $version
    tar -jxvf $file
    diff -r $dirname k2_os-kernel-2.6.28.10 > conclusion/diff-$version-and-k2.txt
    rm -rf $dirname

    stat=`cat conclusion/diff-$version-and-k2.txt | wc -l`
    echo $version '        ' $stat >> conclusion/all.txt
done

count=`awk -F ' ' '{print $2}' conclusion/all.txt | sort -n | head -1`
version=`cat conclusion/all.txt | grep $count$ | awk -F ' ' '{print $1}' $line`
echo '' >> conclusion/all.txt
echo The shortest diff is $count, which kernel version is $version >> conclusion/all.txt
Read More

CentOS6配置rsync服务

rsync是linux下的文件同步服务,本文演示了在CentOS 6系统上配置rsync的过程。

1,服务端配置

网上有很多教程在配置rsync服务端的时候,都先配置了xinetd服务,事实上这是不必要的,rsync也能脱离xinetd以独立进程的方式运行,所以本文未配置xinetd。

$ yum install rsync -y

$ mkdir /etc/rsyncd
$ touch /etc/rsyncd/rsyncd.conf    #主配置文件
$ touch /etc/rsyncd/rsyncd.secrets #客户端连接时使用的用户和密码
$ touch /etc/rsyncd/rsyncd.motd    #服务端提示信息文件
$ chmod 600 /etc/rsyncd/rsyncd.secrets
$ chown root:root /etc/rsyncd/rsyncd.secrets

(more…)

Read More

pip, easy_install使用方式

easy_install 跟 pip 都是 Python 的套件管理程序,有了它们,在使用 Python 开发程序的时候会带來不少方便。
easy_install 和 pip 有什么不一样?据 pip 官网的说法,pip 改善了不少 easy_install 的缺点,如此说來 pip 应该是略胜一筹,不过它还不能够完全取代对方,因为目前有很多套件还是得用 easy_install 安裝。

安装使用easy_install

安装:
$ wget -q http://peak.telecommunity.com/dist/ez_setup.py
$ python ./ez_setup.py

使用:
$ easy_install PackageName     #安装套件
$ easy_install -U PackageName  #更新套件
$ easy_install -m PackageName  #卸载套件
$ easy_install --showhelp      #显示说明

(more…)

Read More

Linux Shell之cut用法

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,grep、awk命令是筛选出特定的行,cut命令则是筛选出特定的列。

(1)cut命令参数
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :输入每行第n个字符(半角,注意如果有中文将乱码)。
-c :输入每行第n个字符(适用中文)。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。

(2)cut命令用法实例 (more…)

Read More