Raspberry Pi開發之旅-發送郵件記錄時間及IP

來源:互聯網
上載者:User

標籤:des   msm   login   sage   tp伺服器   plain   comm   代碼   ica   

由於我使用樹莓派的情境大多數是在沒有顯示器、只用terminal串連它的情況下,所以,它的IP地址有時會在重啟之後變掉(DHCP的),導致我無法通過terminal串連上它。然後我又要很麻煩地登入路由器的管理介面裡,去看它被分配到的新IP是什麼,然後用terminal重連,太麻煩了,不是嗎?作為一個樹莓派玩家,這種麻煩簡直是無法接受的!

為瞭解決這個問題,我讓Pi開機的時候,自動向我指定的Email發送一封郵件,告訴我它此次開機時的IP地址。
步驟: 開機時執行一個指令碼,檢測網路可用性→網路通暢後擷取自己的IP地址→發送郵件到指定的郵箱。
下面一一道來。

1、開機啟動項
開機執行一個指令碼是怎麼做到的?
只需要向 /etc/rc.local 檔案中添加一句話,即可開機執行一個指令碼了:

# send a mail to notify the IP address of Pi/root/data/source/send-ip-mail.sh >> /root/data/source/send-ip-mail.log 2>&1

 2、上報IP地址的指令碼實現
send-ip-mail.sh指令碼的內容如下:(vim不會自動建立指定目錄)

#!/bin/bash # check network availabilitywhile truedo  TIMEOUT=5  SITE_TO_CHECK="www.126.com"  RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`  if [ "x$RET_CODE" = "x200" ]; then  echo "Network OK, will send mail..."  break  else  echo "Network not ready, wait..."  sleep 1s  fidone # get the IP address of eth0, e.g. "192.168.16.5"ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk ‘{print substr($2,1)}‘` # send the Emailecho "Current time: `date ‘+%F %T‘`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" [email protected]

指令碼很簡單,分為3部分:第一部分檢測網路可用性;第二部分取樹莓派的eth0網卡的IP地址;第三部分發送郵件到指定的Email。
其中,第一部分是必須要有的,因為經過我實驗,在本指令碼執行時,樹莓派的網路還沒有初始化好,此時你直接發郵件是發不出去的。在這裡我通過訪問www.126.com來確定網路可用性。
第三部分需要你預先配置好mutt和msmtp。

3、安裝配置mutt和msmtp
配置好mutt和msmtp後,就可以像上面一樣,通過一句代碼將郵件發送出去。
首先要在Pi上安裝mutt和msmtp:

pacman -S msmtppacman -S mutt

 安裝後,先配置msmtp。在你使用者的根目錄下建立檔案 .msmtprc,內容如下:

account defaulthost smtp.126.comfrom [email protected]auth plainuser [email protected]password your_passwordlogfile /var/log/msmtp.log

其中,smtp.126.com是我使用的郵箱的SMTP伺服器位址,[email protected]是我用於發送郵件的郵箱,your_password是郵箱密碼,你要根據你的情況修改。

然後配置mutt。在你使用者的根目錄下建立檔案 .muttrc,內容如下:

set sendmail="/usr/bin/msmtp"set use_from=yesset realname="Alarm"set editor="vim"

其中,realname是寄件者的名字,接收到的郵件中會顯示出來。

4、msmtp測試

測試組態檔案:msmtp -P測試smtp伺服器:msmtp -S
[email protected]:~$ msmtp --host=smtp.163.com --serverinfoSMTP server at smtp.163.com (smtp.163.gslb.netease.com [220.181.12.18]), port 25:    163.com Anti-spam GT for Coremail System (163com[20121016])Capabilities:    PIPELINING:        Support for command grouping for faster transmission    STARTTLS:        Support for TLS encryption via the STARTTLS command    AUTH:        Supported authentication methods:        PLAIN LOGINThis server might advertise more or other capabilities when TLS is active.

 從返回資訊中我們可以看到,這個smtp是支援TLS的,驗證方式支援 PLAIN 和 LOGIN

5、測試郵件

命令列輸入:

echo "test" |mutt -s "my_first_test" [email protected]

6、至此全部搞定,以後每次Pi開機的時候,就會“自報家門”,我們再也不愁找不到Pi啦!

7、常見問題:

錯誤1:

msmtp: account default not found: no configuration file available
msmtp有bug,必須手動指定對應的設定檔
更改/etc/Muttrc中set sendmail="/usr/bin/msmtp"為set sendmail="/usr/bin/msmtp -C .msmtprc"
錯誤2:

msmtp: GNU SASL: Base 64 coding error in SASL library
遇到Base 64 編碼錯誤
更改~/.msmtprc中auth login
為 auth plain
錯誤3:

語句:echo "testtest"|mutt -F/home/spider/.muttrc -s "tttttttt" [email protected]
發郵件時提示:寄送訊息出現在錯誤,子程式已結束 127 (Exec error.).
無法寄出信件

一般是設定檔案出現問題了,

先使用msmtp進行發送測試

[[email protected] ~]# /usr/local/msmtp/bin/msmtp -SSMTP server at smtp.sohu.com ([220.181.90.34]), port 25:    zw_71_37 ESMTP readyCapabilities:    STARTTLS:        Support for TLS encryption via the STARTTLS command    AUTH:        Supported authentication methods:        PLAIN LOGINThis server might advertise more or other capabilities when TLS is active.

發現沒有問題

再利用msmtp查看當前檔案路徑

[[email protected] ~]# /usr/local/msmtp/bin/msmtp -Ploaded system configuration file /usr/local/msmtp/etc/msmtprcignoring user configuration file /root/.msmtprc: No such file or directoryfalling back to default accountusing account default from /usr/local/msmtp/etc/msmtprchost                  = smtp.sohu.comport                  = 25timeout               = offprotocol              = smtpdomain                = localhostauth                  = LOGINuser                  = zabbix2018password              = *passwordeval          = (not set)ntlmdomain            = (not set)tls                   = offtls_starttls          = ontls_trust_file        = (not set)tls_crl_file          = (not set)tls_fingerprint       = (not set)tls_key_file          = (not set)tls_cert_file         = (not set)tls_certcheck         = ontls_force_sslv3       = offtls_min_dh_prime_bits = (not set)tls_priorities        = (not set)auto_from             = offmaildomain            = (not set)from                  = [email protected]dsn_notify            = (not set)dsn_return            = (not set)keepbcc               = offlogfile               = /var/log/zabbix/msmtp.logsyslog                = (not set)aliases               = (not set)reading recipients from the command line

 從上面顯示設定檔也沒有什麼問題,但是查看.muttrc時同時注意到雙引號字元錯誤。修改鍵盤配置。

錯誤4:

[email protected]:~/Desktop/python$ sudo echo hello world | mutt -s "test mail" [email protected]
msmtp: authentication failed (method PLAIN)
msmtp: server message: 550 User is locked
msmtp: could not send mail (account default from /home/ding/.msmtprc)
Error sending message, child exited 77 (Insufficient permission.).
Could not send the message.

沒有開啟SMTP服務,新註冊的使用者預設好像是關閉的,一些郵箱是預設關閉smtp服務的,需要手動開啟。

開啟SMTP服務後,將163郵箱伺服器發給的授權密碼作為/home/ding/.msmtprc 檔案中的password=授權碼

參考:http://jingyan.baidu.com/article/3f16e003e327772591c1039f.html?st=2&os=0&bd_page_type=1&net_type=2

錯誤5:

[email protected]:/u1/str0101>mutt -s dfdf [email protected] <.tmp
Error sending message, child exited 69 (Service unavailable.).
Segmentation fault (core dumped)

郵件伺服器限制,查看sent記錄檔。(我由QQ更換為網易郵箱)

擴充:

使用標準pc104鍵盤

國內多使用標準104鍵盤,下面就開始樹莓派的設定。

1、sudo raspi-config

2、進入國際化配置選項

3、修改鍵盤配置

4、選擇PC104標準鍵盤

5、選擇美國標準

6、選擇鍵盤預設布局

7、compose key設定

8、ctrl+alt+backspace按鍵組合,類似於windows的ctrl+alt+delete。

9、完成設定

 

Raspberry Pi開發之旅-發送郵件記錄時間及IP

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.