行云无鸣

2008-01-16

打包多个文件并以附件发送之的shell脚本

Filed under: 未分类 — 标签:, , — hellyguo @ 12:04

用法:mailfile.sh [待打包文件夹路径] [maillist文件]
其中maillist文件必须为单行文件,邮件地址需用空格间隔

#!/bin/sh
cd $1
maillist=`cat $2`

tar zcf data.tar.gz *.txt
if [ -e data.tar.gz ]
then
echo mail to $maillist
uuencode data.tar.gz data.tar.gz | mail -s “Data” $maillist
rm -rf data.tar.gz
else
echo error:$1/data.tar.gz is not exist
fi

linux下mail的使用

Filed under: 未分类 — 标签:, , — hellyguo @ 10:44

公司有台服务器,需要定时将生成的文件以附件模式发送到某些邮箱
为实现该功能,特参考了下述文章:

19.6.1 Linux Mail

作者: 鸟哥 出处:机械工业出版社华章公司 


阅读提示:《鸟哥的Linux私房菜——服务器架设篇》(第二版)第19章的主要介绍的是以Postfix为主的邮件主机架设。本文主要介绍的是Linux Mail。

19.6 客户端的收发信软件

应用Mail Server有两种主要的方式,可以直接登录Linux主机来操作MTA,也可以通过客户端的MUA软件来收发信件,下面分别介绍这两种方式。

19.6.1 Linux Mail

在Unix like的操作系统中都会存在一个可以进行收发信件的指令,即Mail指令。这个指令是由Mail这个软件所提供的,所以需要先安装Mail软件。另外, 由于Mail是Linux系统的功能,所以即使端口25(SMTP)没有启动,它还是可以使用的,只不过该邮件只会被放到队列,而无法寄出去。下面来谈一 谈最简单的Mail用法。

1. 用Mail直接编辑文字邮件与寄信

Mail的用法很简单,即利用“Mail[E-mail address]”的方式来将信件寄出,“ E-mail address”可以是对外的邮件地址,也可以是本机的账号。如果是本机账号的话,直接加账号名称即可。例如:Mail root或Mail somebody@his.host.name。如果是对外寄信的话,信件默认的Mail from就会填写main.cf内的myorigin变量的主机名称。先来试试看,寄给dmtsai@linux.vbird.tsai

[root@linux ~]# Mail dmtsai@linux.vbird.tsaiSubject: Just test          <==这里填写信件标题

This is a test E-mail.     <==下面为信件的内容

bye bye !

.                              <==注意,这一行只有小数点,代表结束输入

Cc:                           <==密码副本

这样即可将信件寄出。另外,早期的Mail Server是可以接收IP寄信的,例如:Mail dmtsai@[192.168.1.254],记得IP要用中括号包起来。不过由于受到垃圾邮件的影响,现在这种方式几乎都无法成功的将信件寄出了。

2. 利用已经处理完的纯文本文件寄信

这里说的不是以附件发送的方式,因为在Mail这个程序里编辑信件是个很痛苦的差事,不能够按上、下、左、右键回到刚刚编辑有错误的地方,很伤脑 筋。此时可以通过标准输入来处理。如果您忘记“< ”代表的意义,请参考《鸟哥的私房菜——基础学习篇》中的Bash shell章节。例如您要将默认目录的“.bashrc”寄给别人,可以这样做:

[root@linux ~]# Mail -s 'My bashrc' dmtsai < ~/.bashrc

3. 开始接收信件

寄信比较简单,那么收信呢?收信还是使用Mail。直接在提示字符后输入Mail时,会主动的捉取用户在/var/spool/Mail下的邮件信 箱(Mailbox),例如dmtsai这个账号在输入Mail后,就会将/var/spool/Mail/dmtsai文件的内容读出来并显示到屏幕 上,结果如下:

[root@linux ~]# MailMail version 8.1 6/6/93.  Type ? for help.

"/var/spool/Mail/dmtsai": 1 message 1 unread

>U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"

&  <==这是Mail软件的提示字符,可以输入“?”来查看可用指令

上述代码显示dmtsai有一封信,且会附上该信件的发信者、标题及收信时间等。可以应用的指令如下。

(1)读信(直接按Enter或输入数字按Enter)

当看到“> ”符号时,表示目前Mail所在的邮件字段,您可以直接输入数字按Enter或在“&”后的光标位置输入号码,即可看到该封信件的内容。如果持续按Enter,则会自“>”符号所在的邮件逐次向后读取每封信件内容。

(2)显示标题(直接输入h)

如果要重新显示每封信的标题,则输入h即可。

(3)回复邮件(直接输入R)

如果要回复目前“>”符号所在的邮件,直接输入R即可进入刚刚前面介绍过的Mail文字编辑界面了。可以在编辑信件后回复邮件。

(4)删除邮件(输入d)

输入“d## ”即可删除邮件。例如要删除第2封邮件,可以输入“d 2”如果要删除第10~50封邮件,可以输入“d 10-50”。如果有删除邮件的话,离开Mail box时,要使用q。

(5)储存邮件到文件(输入s+文件名)

如果要将邮件资料存下来,可以输入“s##filename”,例如要将第2封邮件存下来,可以输入“s 1 uuencode”即可将第2封邮件内容另存为uuencode文件。

(6)离开Mail(输入q或x)

要离开Mail可以输入q或者是x,输入x可以在不更改Mail box的情况下离开Mail程序,不管刚刚有没有使用d删除数据;使用q会将删除的数据清除,并且会将所有已读过的信件内容转存到默认目录下的mbox文 件。也就是说,如果您不想更改Mail box,那就使用x或exit离开,如果想要使刚刚移除的操作生效,就要使用q。不过,使用q之后,只有未读的信件才会保留在 /var/spool/Mail/accout里,其他已读的数据都会被存入“~/mbox”中。例如 /home/dmtsai/mbox为储存dmtsai已读过的信件。

(7)请求帮助

关于Mail更详细的用法可以输入help以显示目前Mail的所有功能。

上面是简易的Mail收信功能。不过,如果离开Mail时按下q,信件将转存到“~/mbox”这个邮件信箱,那么该如何读取这个文件内的信件数据呢?可简单的使用以下方式来读取:

[root@linux ~]# Mail -f ~/mbox

4. 以“附件”的方式寄信

前面提到的都是信件的内容,那么能否以“附件”的方式来传递文件呢?当然是可以的,不过需要uuencode指令的帮助,在CentOS中这个指令属于shartuils,请先利用yum来安装它。接下来可以这样使用:

[root@linux ~]# [利用uuencode编码 ] | [利用Mail寄出去][root@linux ~]# uuencode [实际文件] [信件中的文件名]|Mail-s '标题' E-mail范例一:将“~/.bashrc”以附件的方式寄给dmtsai

[root@linux ~]# uuencode ~/.bashrc bashrc | Mail -s 'test encode' dmtsai

这样就能寄出去了,不过,如果收下这封信件呢?需要通过译码器来解码。首先需要将该文件存下来,然后进行如下操作:

[root@linux ~]# MailMail version 8.1 6/6/93.  Type ? for help.

"/var/spool/Mail/dmtsai": 2 messages 2 unread

>U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"

U  2 root@linux.vbird.tsai  Fri Nov 24 11:52  24/904   "test encode"

& s 2 test_encode

"test_encode" [New file]

& exit[root@linux ~]# uudecode test_encode -o decode

加密文件          输出文件

虽然Mail指令不是很好用,但至少它可以提供一种在Linux纯文本模式下的简单的收发信件功能。我们最好还是熟悉一下。

参考鸟哥的文章,安装了sharutils,并记录了安装使用方法:

发送邮件说明
1.若要在console模式下发送带附件邮件,需添加软件包sharutils
2.下载sharutils-4.2.1-22.2.FC3.i386.rpm
3.以root登录,以命令:rpm -ivh sharutils-4.2.1-22.2.FC3.i386.rpm安装
4.测试发送:uuencode [本地文件名] [邮件内附件名] | mail -s [主题] [邮送地址,多个可用空格间隔]

%d 博主赞过: