因為寒假要離校(捨不得學校的熱水和球場),擔心伺服器被斷電重啟後的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...