Linux系统相关学习:IP地址邮件自动发送

来源:互联网 发布:c语言幻数 编辑:程序博客网 时间:2024/06/05 20:28

   试验环境: ubuntu10.04

   目标:实现一个开机后不用用户登录就自动发邮件报告ip地址的功能,主脚本放在/etc/init.d下,系统默认运行级别为2,所以在 /etc/rc2.d/下建个S99级别的软链接。 具体实现是先用ifconfig获取系统IP信息,保存到/tmp下的一文件IPaddr,然后通过sendmail脚本读取IPaddr文件来发送邮件。 确认脚本都正常工作。

python脚本:sendmail.py

#!/usr/bin/env pythonimport sysimport smtplibfrom email.mime.text import MIMETextif len(sys.argv) < 2:    print "Usage: python " + sys.argv[0] + " mail_content"    sys.exit()#################### read IP address ####################fh = open(sys.argv[1], "r")mail_content = fh.read()fh.close()############### send email ###############mailto_list=["****@gmail.com"]mail_host="***"mail_user="***"mail_pass="***"mail_postfix="***"def send_mail(to_list, sub, content):    '''    to_list: to who    sub: subject    content:    send_mail(to_list, subject, content)    '''    me = mail_user + "<" + mail_user + "@" + mail_postfix + ">"    msg = MIMEText(content)    msg['Subject'] = sub    msg['From'] = me    msg['To'] = ";".join(to_list)    try:        s = smtplib.SMTP();        s.connect(mail_host)        s.login(mail_user, mail_pass)        s.sendmail(me, to_list, msg.as_string())        s.close        return True    except Exception, e:        print str(e)        return Falseif __name__ == '__main__':    if send_mail(mailto_list, "Lab. IP address", mail_content):        print "send OK!"    else:        print "sent fail!"

执行脚本:

#!/bin/shhome="/home/user/SendIP"log="$home/sendmail.log"IPaddr="$home/IPaddr"/bin/date >> $log/sbin/ifconfig > $IPaddrpython $home/sendmail.py $IPaddr >> $logexit 0


     现在遇到以下问题:开机时IPaddr文件中并没有分配实际的ip信息, 导致sendmail发送失败。系统登录后运行/etc/init.d/sendIP  status 能正确运行,发送成功!想问问IP的获取是在什么阶段运行的,不是应该在rc2.d运行就应该完成配置了吗? 不解~


附IPaddr文件:

UP BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)Interrupt:17 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)



     开机自动发邮件的目的最终搞不定,降低要求,定时发就可以。  用crontab 搞定!

原创粉丝点击