自動發郵件指令碼

2021-08-13 22:04:06 字數 1434 閱讀 8611

在內網內連線伺服器經常需要知道伺服器的ip位址,那麼有沒有辦法在開機的時候自動發郵件告訴我們呢?答案是肯定的。

系統 ubantu16.04

思路:利用系統初始化時啟動的指令碼執行乙個傳送郵件的python指令碼

查閱資料可以知道,ubantu16.04在啟動時,會執行乙個在/etc/rc.local的檔案,那麼我們可以在該檔案編寫命令執行python指令碼,就可以達到開機傳送郵件給自己的目的了。由於不同系統開機執行的檔案可能不同,本人就是在自己的機子上修改rc.local檔案就可以了,但應用伺服器上死活不發給我,具體就自己除錯了。下面關注python指令碼。

安裝smtplib包,直接在你預設環境下conda install 或pip install 就可以了。下面是**:

# -*- coding:utf-8 -*-

import smtplib

from email.mime.text import mimetext

from email.utils import formataddr

import re

import os

#獲取ip資訊

ifconfig_output=os.popen('ifconfig').read()

#提取內網ip位址,這裡按我自己的資訊結構提取,具體自己再編寫正則

pat=re.compile(r'inet addr:[0-9].[0-9].[0-9].[0-9]')

match=pat.findall(ifconfig_output)

ip=match[1]

try:

sender='傳送郵件的帳號'

sender_password='傳送郵件帳號的密碼'

receiver=['目標帳號',]

#資訊的主體內容

msg=mimetext(ip,'plain','utf-8')

#傳送者資訊

msg['from']=formataddr(['sender',sender])

#郵件的主題

msg['subject'] = '伺服器ip位址'

#連線伺服器

server = smtplib.smtp_ssl("你使用的郵件帳號的smtp伺服器", 465)

server.login(sender, sender_password)

server.sendmail(sender, receiver, msg.as_string())

server.quit()

except:

print ('傳送失敗!!!')

本機把這個python指令碼命名為send_email.py,放到/etc/下,再在/etc/rc.local的exit 0前加上1行:

python /etc/send_email.py !!!注意執行檔案必須使用絕對路徑

儲存,關機測試即可

python指令碼自動發郵件功能

最近給專案加監控,用python寫了乙個指令碼,在出錯的時候自動發郵件通知的功能。如下 usr bin python coding utf 8 from smtplib import smtp smtpsvr mail.com smtp伺服器網域名稱 orighdrs from monitor co...

perl發郵件指令碼

在外地出差也搞什麼郵件簽到,真無聊 前一段看歐錦賽,時差還沒調整過來,早上起不來zzzzz 不過上有政策,下有對策嘛 就在伺服器上寫了乙個perl指令碼,用net smtp發郵件,用crontab來定時跑,一下就解決了,哈哈 perl指令碼 123 4567 891011 1213 1415 161...

Python自動發郵件

摘要 本文介紹如何使用python發郵件,主要原理是利用qq郵箱傳送郵件 獲得授權碼後將其寫在下面程式中,然後就可以給自己的郵箱發郵件了 使用qq郵箱傳送郵件 content是傳送的內容,格式為 hostusername你自己的qq郵箱名 tousername 接收方的郵箱賬號 import smt...