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

原创 2012年03月28日 20:25:24

   试验环境: ubuntu10.04

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

python脚本:sendmail.py

#!/usr/bin/env python
import sys
import smtplib
from email.mime.text import MIMEText

if 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 False
if __name__ == '__main__':
    if send_mail(mailto_list, "Lab. IP address", mail_content):
        print "send OK!"
    else:
        print "sent fail!"

执行脚本:

#!/bin/sh
home="/home/user/SendIP"
log="$home/sendmail.log"
IPaddr="$home/IPaddr"
/bin/date >> $log
/sbin/ifconfig > $IPaddr
python $home/sendmail.py $IPaddr >> $log
exit 0


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


附IPaddr文件:

UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions: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.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)



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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

嵌入式Linux系统下使用DHCP,为开发板自动分配IP地址

1、首先确认Linux内核编译生成时选择了DHCP Networking ---> Networking support Networking options ---> Packet so...

获得Unix/Linux系统中的IP、MAC地址等信息

本文来自http://programmerdigest.cn/2010/07/1050.html 获得Unix/Linux系统中的IP、MAC地址等信息 中高级  |  2010-07...

Linux系统下关于网络ip地址的配置方法

图形界面配置 1.终端中运行:setup       -如果没有网络配置选项请查阅博客:添加   网络配置   选项        2.选择  网络配置>>设备配置>>e...

在Linux系统中增加IP地址网段

操作系统:CentOS Releas5(Kernel 2.6.16-53.1.14.el5) 当前系统IP: 一、       添加单个IP网段的方法: 1.1、   在系统中添加网络配置文...

获得Linux系统中的IP、MAC地址等信息 .

实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的M...

Linux系统设置静态IP地址

1、setup命令进入。 2、选择network configuration。

获得Linux系统中的IP、MAC地址等信息

获得Unix/Linux系统中的IP、MAC地址等信息 实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些...

获得Unix/Linux系统中的IP、MAC地址等信息[zhuan]

实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的M...

linux系统双网卡绑定单个IP地址及网桥

双网卡绑定单个IP 地址 为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。多网卡绑。   为了提供网络的高可用性...

获得Linux系统中的IP、MAC地址等信息

http://blog.csdn.net/tianmo2010/article/details/6834450 实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中soc...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)