試驗環境: 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系統IP位址變更
1.vi開啟 etc sysconfig network scripts ifcfg eth0檔案 原內容 device eth0 bootproto dhcp hwaddr 00 03 47 2c d5 40 onboot yes type ethernet 改為 device eth0 boot...
Linux學習 IP位址配置
本例中使用的是無線網連線,子網掩碼 255.255.255.0 閘道器 192.168.3.1 主dns 8.8.8.8 谷歌首選dns的ip 或換成國內首選221.228.225.1 次dns 8.8.4.4 谷歌備選dns的ip 或換成國內備選114.114.114.114 vi etc sys...
獲取linux系統的ip位址
使用shell指令碼獲取linux系統的ip位址 ifconfig a grep inet grep v 127.0.0.1 grep v inet6 awk tr d addr 如果沒有ifconfig命令,可使用 ip addr grep inet grep v 127.0.0.1 grep v...