伺服器定時傳送IP位址到郵箱

2021-10-17 04:12:09 字數 4035 閱讀 3126

因為寒假要離校(捨不得學校的熱水和球場),擔心伺服器被斷電重啟後的ip位址發生變化,於是和實驗室的小夥伴心生一計,打算每次重啟傳送當前的ip位址到郵箱,這樣就不用擔心ip位址發生變化了。

# 檢視作業系統資訊

cat /etc/issue

ubuntu 18.04.5 lst

這裡我詳細講解我的傻瓜式流程。首先安裝mutt和msmtp,如下:

安裝軟體包

# msmtp就可以提供一般的郵件服務了

# mutt也是呼叫了msmtp,但更方便使用者使用郵件功能

sudo

apt-get

install msmtp mutt

郵箱授權碼然後,我們會需要乙個當前郵箱伺服器的smtp服務授權碼,比如我使用的是163的郵箱,我們將在這裡開啟smtp服務的授權碼:

然後選擇開啟,通過手機簡訊等驗證方式驗證,記錄下最後得到的授權碼(我拿自己的郵箱嘗試的,所以mask一些部分),這樣我們在郵箱上操作的部分就結束了。

msmtp傳送郵件

我一般習慣使用vim編寫檔案,有的人會用vi,這個看個人習慣,編寫的**如下:

# 建立msmtp.log檔案

sudo vim /var/log/msmtp.log

# 建立msmtprc檔案

sudo vim /etc/msmtprc

/etc/msmtprc 內容如下:

defaults

tls on

# /var/log/msmtp.log 記錄郵件傳送的詳細資訊

logfile /var/log/msmtp.log

# 這個可以自己定義,與account default一致即可

account fatekong

# 設定郵件的伺服器,這裡設定了163後,只能傳送給163的郵箱

host smtp.163.com

port 25

# "[email protected]"是示範郵箱

from [email protected]

auth login

tls off

# "[email protected]"是示範郵箱

user [email protected]

# "authorization code"填寫自己郵箱得到的授權碼,輸入時沒有

password "authorization code"

account default: fatekong

~~

sudo

chmod 600 /etc/msmtprc

echo

"subject: 【test】\r\n\r\nthis is a test."

|msmtp -d -c /etc/msmtprc -t [email protected]

mutt傳送郵件個人人為mutt比msmtp更加方便,並且能傳輸更多東西,不過我就傳個ip就不搞的那麼花裡胡哨了,下面簡單介紹下mutt傳送檔案內的內容(想知道更多的可以瞅瞅這篇正式的介紹「mutt」:命令列的郵件大師 (一文詳解))。

首先設定mutt的配置檔案muttrc:

sudo vim /etc/muttrc
/etc/muttrc 內容如下:

set sendmail=

"/usr/bin/msmtp"

set use_from=yes

# "realname"可以填寫你像設定該伺服器的名稱

set realname=

"realname"

set editor=

"vim"

設定好這些,我將需要傳送的內容全部儲存在乙個檔案裡,獲取檔案的內容傳送郵件資訊,建立乙個名稱為serverip的檔案儲存在*/var/log/裡,絕對路徑為:/var/log/serverip*,將檔案內容傳送給郵件的**如下:

cat /var/log/serverip|mutt -s "【test】" [email protected]
檢查自己郵箱,一般來說上面的步驟沒有問題就沒有問題了(如果上面或下面遇到許可權的問題,可以通過chmod命令修改許可權來解決)。

#!/bin/bash

echo

"send e-mail"

# 將ifconfig得到的ip資訊儲存到/var/log/serverip的檔案中

# 這裡一定要加/sbin/,因為在crontab裡面執行需要的是絕對路勁,

# ifconfig這種命令也不例外

# 如果沒有加/sbin/,得到的全是內容為空的輸出

/sbin/ifconfig > /var/log/serverip

# 通過mutt,獲取/var/log/serverip檔案的內容,以title為"【title】",內容為

# serverip儲存的資訊,傳送給郵箱[email protected]

cat /var/log/serverip |mutt -s "【title】" [email protected]

# 上面這兩句可以合成一句,這樣就可以省略:/var/log/serverip這個檔案

/sbin/ifconfig |mutt -s "【title】" [email protected]

為了驗證這個指令碼是否成功,可以嘗試直接執行指令碼:

./serverip.sh
設定開機啟動項的方法有很多,詳情可檢視這篇部落格linux—新增開機啟動(服務/指令碼)。我在其中選擇了最簡單的方法,弊病就是,每個使用者登入的時候都會啟動一次,因為最後沒有使用這個方案,所以我也沒改?。

# 將/home/下的serverip移動到/etc/profile.d中去

sudo

mv /home/serverip /etc/profile.d/serverip

根據上面的內容,定時放鬆的方法,我參考了這篇文章ubuntu定時執行任務。

注意!!!crontab需要的是絕對路徑,所以裡面的命令和檔案,以及執行的指令碼檔案內的有涉及到路徑的地方,一定要寫絕對路徑!!!

檢視cron是否執行,如果沒執行的話啟動一下:

# 檢視cron的情況

ps -ef |

grep

cron

# 設定開機自動執行

sudo

service

cron start

接下來,將剛才準備好的指令碼放進去:

# 編輯crontab

sudo

crontab -e

# 會有幾個選項選擇編譯器,我還是萬年不變選擇了vim,這裡看個人,不影響結果

# 分 時 天 月 周 命令

# 我這裡表示的是,每3天的09點00分啟動/home/serverip.sh指令碼

0 9 */3 * * /home/serverip.sh

然後輸入:

sudo

service

cron restart

使上面的修改生效。

如果你需要嘗試是否成功,可以先使用如下命令,看是否能每分鐘收到資訊,如果上面的步驟沒有問題,那這一步一般不會有什麼問題。

*/1 * * * * /home/serverip.sh

各類郵箱伺服器位址

一般地,郵箱 pop3 伺服器 埠110 smtp 伺服器 埠25 一般地 郵箱 pop3 伺服器 埠110 smtp 伺服器 埠25 163免費郵箱郵件伺服器位址 專案位址 接收郵件 pop imap或http pop.163.com 傳送郵件伺服器 smtp smtp.163.com 126免費...

土法煉鋼 伺服器定時匯報IP位址給我

我家裡面的伺服器,每過兩天會自動重新撥號,所以公網ip位址天會變的。而一旦ip位址發生變化,我就沒有辦法從公網訪問我家裡的伺服器了。怎麼辦呢?1.在另外一台公網伺服器上放乙個php程式 myip.php,檢測客戶端的ip位址 reip server remote addr echo reip fil...

戰地2伺服器IP位址

saga伺服器 saga 1號伺服器 v 1.41 pb 主力公眾伺服器 rank系統 ip 電信 218.75.27.213 16567 所在地 浙江溫州 saga 2號伺服器 v 1.41 pb 主力公眾伺服器 rank系統 ip 電信 222.243.13.83 16567 網域名稱 s2.b...