1.樹莓派3安裝archlinux通用配置部分

本文永久地址:https://my.oschina.net/bysu/blog/1560594php

安裝過程請參考:https://my.oschina.net/bysu/blog/1557801html

樹莓派3安裝archlinux配置web、samba和aria2請參考java

買了個樹莓派3主要是想用來當家用NAS和學習編程。因爲樹莓派性能有限,故此分兩種環境配置。如今先配置通用環境部分。python

強插入:虛擬內存分區(該節點未驗證,網上看到,記錄爲往後不時之需)

建立交換文件

交換文件能夠在物理內存不足的時候將部份內存暫存到交換文件中,避免系統因爲內存不足而徹底中止工做。linux

以前咱們一般採用單獨一個分區的方式做爲交換分區,如今更推薦採用交換文件的方式,更便於咱們的管理。web

分配一塊空間用於交換文件,執行:shell

fallocate -l 512M /swapfile (請將512M換成須要的大小,只能以M或G爲單位)

更改權限,執行:交換文件的大小能夠本身決定,推薦4G如下的物理內存,交換文件與物理內存一致,4G以上的物理內存,交換文件4-8G。apache

chmod 600 /swapfile
mkswap /swapfile

設置交換文件,執行:編程

啓用交換文件,執行:vim

swapon /swapfile
vim /etc/fstab

最後咱們須要編輯/etc/fstab爲交換文件設置一個入口,使用vim打開文件:

注意編輯fstab文件的時候要格外注意不要修改以前的內容,直接在最後新起一行加入如下內容

/swapfile none swap defaults 0 0

 

1.更換源;

編輯 /etc/pacman.d/mirrorlist

在文件頭部添加:

清華軟件源:

Server = http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo

中科大軟件源:

Server = http://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo


更新軟件源:

pacman -Syyu

2.新增用戶,安裝sudo

新增用戶及其相應的家目錄

#新增用戶
useradd -d /home/bysu -m bysu   #使用root用戶

#設置密碼
passwd bysu         #使用root用戶

若是出現使用新增用戶登陸提示該用戶的家目錄拒絕訪問,可使用一下命令試一下。

chown -R bysu:root /home/bysu/

 

安裝sudo:

# pacman -S sudo

輸入 vi /etc/sudoers 

root ALL=(ALL) ALL  #找到這一行,加入下面內容 bysu爲你新增的用戶
bysu ALL=(ALL) NOPASSWD:ALL

或者

去掉 #%wheel ALL=(ALL) ALL 此行註釋,使wheel用戶組能夠臨時使用sudo 提升權限。

這裏插一個配置

在Archlinux裏,常常 使用ls等相關命令,可是Archlinux默認是黑白界面,超級醜,爲此對其修改,使得其結果帶有顏色

修改/etc/profile文件,在文件尾部增長

export LS_OPTIONS="--color=auto -N -T 0"  
alias ls="ls $LS_OPTIONS"  
#也能夠經過alias命名命令別名

3.設置WiFi

若是以前systemctl enable dhcpcd.service

 systemctl stop dhcpcd.service      #停住服務
 systemctl disable dhcpcd.service  #取消開機啓動

 systemctl status dhcpcd.service  #查看狀態


 # 而後

 cd /etc/netctl
 cp examples/wireless-wpa .    # 後面有一個i點,表示當前目錄 A simple WPA encrypted wireless connection
 vi wireless-wpa    # Modify
     Interface=wlan0 # iw dev查看, 或ip link 或ifconfig
     Connection=wireless
     Security=wpa
     
     IP=dhcp
     ESSID='wifi-name'    #這個是你須要鏈接WiFi的名字
     Key='wifi-passwd'    #WiFi密碼

注意,必須先完成以上才能進行一下,不然有一系列問題
 

 netctl enable wireless-wpa
 netctl start wireless-wpa
 reboot

4.設置支持中文顯示(該節點設置貌似還有點問題,中文顯示爲Unicode編碼)

要顯示中文,須要生成中文語言包和安裝中文字體

一、生成中文語言包

archlinux使用locale-gen腳本生產相應的語言包,locale-gen路徑 /usr/bin/locale-gen,使用less打開該腳本。

less  /usr/bin/locale-gen  

找到下面代碼

LOCALEGEN=/etc/locale.gen  
LOCALES=/usr/share/i18n/locales 

上面第一行是語言包的配置路徑;第二行是一些本地化(區域)習慣的配置文件路徑,例如貨幣符號,時間格式,日期格式等等。

按照上面代碼,找到 /etc/locale.gen,打開編輯,選擇相應的語言(取消行首的註釋)。推薦使用UTF-8的那個,兼容性強。

en_us.UTF-8  UTF8
zh_CN.GB18030  GB18030  
zh_CN.UTF-8  UTF8

執行命令,生成語言包

locale-gen

設置系統語言爲 zh_CN.UTF-8 ,編輯 /etc/locale.conf ,寫入如下內容

LANG="zh_CN.UTF-8"

(以上方法只能解決ssh中文顯示問題,本機直接字符界面啓動,中文仍是方塊)

安裝中文字體,推薦使用文泉驛。(最新系統非必要,2017年11月1日)

pacman -S wqy-zenhei 

#或者
pacman -S wqy-microhei ttf-dejavu

5.安裝vim

pacman -S vim

6.更改時區

設置時區爲 Shanghai

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

7.支持NTFS格式的讀寫權限

pacman -S ntfs-3g

8.設置自動掛載

先經過命令查看卷標名

[bysu@alarm ~]$ sudo blkid -s LABEL
/dev/sda1: LABEL="guest"
/dev/sda2: LABEL="share-rw"
/dev/sda3: LABEL="lifuli"
/dev/sda5: LABEL="bysu"

而後建立掛載點

sudo mkdir -p /media/samba/{guest,share-rw,lifuli,bysu}

掛載點建立好以後,對各個分區進行掛載

[bysu@alarm ~]$ sudo mount /dev/sda1 /media/samba/guest/
[bysu@alarm ~]$ sudo mount /dev/sda2 /media/samba/share-rw/
[bysu@alarm ~]$ sudo mount /dev/sda3 /media/samba/lifuli/
[bysu@alarm ~]$ sudo mount /dev/sda5 /media/samba/bysu/

掛載好以後,設置開機自動掛載

[bysu@alarm ~]$ sudo vi /etc/fstab


# 看最後4行就是我添加的內容
# /etc/fstab: static file system information
#
# <file system> <dir>	<type>	<options>	<dump>	<pass>
/dev/mmcblk0p1  /boot   vfat    defaults        0       0
/dev/sda1 /media/samba/guest/ ntfs-3g defaults 0 0
/dev/sda2 /media/samba/share-rw/ ntfs-3g defaults 0 0
/dev/sda3 /media/samba/lifuli/ ntfs-3g defaults 0 0
/dev/sda5 /media/samba/bysu/ ntfs-3g defaults 0 0

保存退出後,記得先運行一遍 mount -a,不然報錯的話,系統啓動不了.以前在raspberry上面栽過一次.

此處針對archlinux系統(2017年11月5日此時最新版本)還有一個巨坑。被坑了無數次,系統重裝了N遍。就是自動掛載移動硬盤後,若是這個時候沒有鏈接須要掛載的硬盤,或者若是硬盤須要額外供電,可是沒有開啓電源,那麼系統啓動後,將沒法經過ssh鏈接。想爆粗口了,媽了個雞...

Linux版本信息

[bysu@alarm mdisk.sh]$ cat  /proc/version
Linux version 4.13.11-1-ARCH (builduser@leming) (gcc version 7.2.0 (GCC)) #1 SMP Thu Nov 2 19:01:07 MDT 2017

爲此,我在/home/bysu/tools/mdisk.sh寫了掛載的腳本

sudo mount /dev/sda1 /media/samba/guest/
sudo mount /dev/sda2 /media/samba/share-rw/
sudo mount /dev/sda3 /media/samba/lifuli/
sudo mount /dev/sda5 /media/samba/bysu/ 


#卸載umdisk.sh
sudo umount  /media/samba/guest/
sudo umount  /media/samba/share-rw/
sudo umount  /media/samba/lifuli/
sudo umount  /media/samba/bysu/

把它寫成開機自啓動腳本(參考自III)。

經過vi 建立/etc/mdisk.d

#!/bin/bash
for loop in 1 2 3 4 5
do
sleep 1s
done
is_sshd=`ps -ef | grep -c ssh`
is_mount=`fdisk -l | grep -c sda`
if [ $is_sshd -gt 1 ] && [ $is_mount -gt 2 ]
then
mount /dev/sda1 /media/samba/guest/
mount /dev/sda2 /media/samba/share-rw/
mount /dev/sda3 /media/samba/lifuli/
mount /dev/sda5 /media/samba/bysu/
fi


###############通過優化,以上面這段爲準,本人不懂shell腳本,胡亂拼湊,請勿拍磚########################3


#!/bin/bash
is_sshd = `ps -ef | grep -c ssh`
is_mount = `fdisk -l | grep -c sda`
while true
do
if [($is_sshd -gt 1) -a ($is_mount -gt 2)]
then
sudo mount /dev/sda1 /media/samba/guest/
sudo mount /dev/sda2 /media/samba/share-rw/
sudo mount /dev/sda3 /media/samba/lifuli/
sudo mount /dev/sda5 /media/samba/bysu/
break
else
echo "not connect sh, wait..." > /var/log/mdisk.log
sleep 1s
fi
done


或者
#!/bin/bash
is_ssh = `netstat -tl|grep ssh|sed -n '1p'|awk '{print $4}'|awk -F . '{print $4}'|awk -F : '{print $2}'`

while true
do
if [ $(ps -ef | grep -c "ssh") -gt 1 ]
if[$is_ssh="ssh"]
then
sudo mount /dev/sda1 /media/samba/guest/
sudo mount /dev/sda2 /media/samba/share-rw/
sudo mount /dev/sda3 /media/samba/lifuli/
sudo mount /dev/sda5 /media/samba/bysu/

給/etc/mdisk.d加可執行權限

chmod +x /etc/mdisk.d

經過vi,建立/usr/lib/systemd/system/mdisk.service文件

[Unit]
Description="/etc/mdisk.d Compatibility" 
ConditionPathExists=/etc/mdisk.d
 
[Service]
Type=forking
ExecStart=/etc/mdisk.d
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target

#######分割線########
以上注意相關文件路徑便可

設爲開機啓動 

systemctl enable mdisk

啓動服務

systemctl start mdisk

查看啓動狀態

sytemctl status mdisk

9..安裝java、python

java安裝(參考自)

jdk下載:http://download.csdn.net/download/gdzjsubaoya/10103442

在usr下面建立tool文件夾,解壓jdk-8u152-linux-arm64-vfp-hflt.tar.gz到tool文件夾

編輯 /etc/profile 加入下面內容,注意/usr/tool/jdk1.8是和當前解壓的jdk對應的

vi /etc/profile

按住Shift+g,調到文末,而後按小寫英文字母o

添加如下5行內容
JAVA_HOME=/usr/tool/jdk1.8
JRE_HOME=/usr/tool/jdk1.8/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH


#而後按Esc鍵,冒號:
#接在輸入wq 回車就能夠了


添加後,整個文件的內容以下:
# /etc/profile

#Set our umask
umask 022

# Set our default path
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin"
export PATH

# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
	for profile in /etc/profile.d/*.sh; do
		test -r "$profile" && . "$profile"
	done
	unset profile
fi

# Source global bash config
if test "$PS1" && test "$BASH" && test -z ${POSIXLY_CORRECT+x} && test -r /etc/bash.bashrc; then
	. /etc/bash.bashrc
fi

# Termcap is outdated, old, and crusty, kill it.
unset TERMCAP

# Man is much better than us at figuring this out
unset MANPATH
JAVA_HOME=/usr/tool/jdk1.8 
JRE_HOME=/usr/tool/jdk1.8/jre 
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib 
export JAVA_HOME JRE_HOME PATH CLASSPATH

使環境變量當即生效,輸入命令

source /etc/profile

測試

vi Test.java
public class Test{
	public static void  main(String[] args){
		System.out.println("Hello,archlinux");
	}
}

保存退出。而後輸入javac Test.java進行編譯。輸入java Test 運行。

[root@alarm java]# java Test  
Hello,archlinux

安裝python

安裝python3

pacman -S python

安裝python2

pacman -S python2

默認是python3.若是須要更改默認爲python2.參考我從wiki中摘錄過來的。

Python 2 能夠和 Python 3 同時運行,須要指定成python2纔會運行此版本。

默認的/usr/bin/python是連接到 python 3 的,因此全部要求使用 python 2 的軟件包應該用 /usr/bin/python2 替換 /usr/bin/python.

用文本編輯器打開程序或腳本,將第一行:

#!/usr/bin/env python

#!/usr/bin/python

中的 python 替換爲 python2

另外一種強制使用 python2 而不修改腳本的方法是明確地使用 python2 調用它,即

python2 myScript.py

最後,你可能沒法控制腳本調用哪個,但還有一種方法。它僅在腳本使用 #!/usr/bin/env python 時有效,在用 #!/usr/bin/python 時無效。這種手法依賴於 env 在 PATH 變量中搜索第一個對應的條目。 首先建立一個目錄。

$ mkdir ~/bin

而後添加一個名爲 'python' 的連接指向 python2 以及一個名爲 'python-config' 的連接指向 python2-config 。

$ ln -s /usr/bin/python2 ~/bin/python
$ ln -s /usr/bin/python2-config ~/bin/python-config

最後把新的目錄添加到你的 PATH 變量的 最前面

$ export PATH=~/bin:$PATH

注意到這個修改不是永久的,僅在當前終端會話中有效。 要檢查 env 使用的是哪一個 python 解釋器,使用如下命令:

$ which python

另外一個解決這個問題的方法是經過 Python/Virtualenv (簡體中文) 來僞造一個腳本的運行環境。

安裝pip

#若是須要安裝pip2
sudo pacman -S python2-pip

#安裝pip3
sudo pacman -S pip

使用pip進行python庫管理

sudo pip install 包名

#使用pip2
sudo pip2 install 包名  #若是隻安裝pip2,只需pip便可

#查看pip安裝路徑
sudo whereis pip

10.ip地址改變後,自動發送郵件

安裝mutt和msmtp

pacman -S msmtp
pacman -S mutt

配置msmtp。在你用戶的根目錄下建立文件 .msmtprc,內容以下:

account default
host smtp.163.com
port 25
from xxx@163.com
auth plain
user xxx@163.com
password your_password
tls off
tls_starttls off
logfile /var/log/msmtp.log


其中,smtp.163.com是我使用的郵箱的SMTP服務器地址,xxx@163.com是我用於發送郵件的郵箱,your_password是郵箱的受權碼(譬如我在163申請了一串受權碼,就是該受權碼,不少教程說是郵箱密碼,具體請另行測試),你要根據你的狀況修改。
而後配置mutt。在你用戶的根目錄下建立文件 .muttrc,內容以下:

set realname='shumeipai3'       #這個在郵箱中顯示爲發件人

set sendmail="/usr/bin/msmtp"

set edit_headers=yes
set folder=~/mail
set mbox=+mbox
set spoolfile=+inbox
set record="/home/bysu/sent"   #set record=+sent,這樣子會報Couldn't lock  /mail/sent的錯誤
set postponed=+drafts
set mbox_type=Maildir

mailboxes +inbox +lovey-dovey +happy-kangaroos

新增一個sent文件

touch /home/bysu/sent

以上的文件都須要注意權限

sudo chmod 600 /home/bysu/{.muttrc,.msmtprc,sent} #這個命令隨手寫的,沒有試過,反正就是這3個文件須要改爲600權限

配置完後,能夠採用以下的命令進行郵件發送功能的驗證,具體以下:其中,realname是發件人的名字,接收到的郵件中會顯示出來。

echo 「helloworld」 | mutt –s 「test mutt sent mail」 xxxx01873@qq.com

-------------如下是安裝配置過程當中的各類報錯-----------------------------------------------

報錯

sions
Error sending message, child exited 78 ().
Could not send the message.

查看文件權限

[bysu@alarm ~]$ ls -la  /home/bysu/.msmtprc
-rw-r--r-- 1 bysu root 134 Nov  7 20:37 /home/bysu/.msmtprc

修改權限

sudo chmod  600 /home/bysu/.msmtprc

#查看該文件權限,改編爲
[bysu@alarm ~]$ ls -la  /home/bysu/.msmtprc
-rw------- 1 bysu root 134 Nov  7 20:37 /home/bysu/.msmtprc

繼續測試

echo 「helloworld」 | mutt –s 「test subject」 657501873@qq.com

報錯以下:

msmtp: authentication failed (method PLAIN)
msmtp: server message: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
msmtp: could not send mail (account default from /home/bysu/.msmtprc)
msmtp: cannot log to /var/log/msmtp.log: cannot open: Permission denied
msmtp: log info was: host=smtp.qq.com tls=off auth=on user=657501873@qq.com from=657501873@qq.com recipients=���s@alarm,���test@alarm,subject���@alarm,657501873@qq.com smtpstatus=530 smtpmsg='530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28' errormsg='authentication failed (method PLAIN)' exitcode=EX_NOPERM
Error sending message, child exited 77 (Insufficient permission.).
Could not send the message.

不知道什麼鬼,聽說是服務器拒絕了。改配置,轉163繼續。又報錯,

/home/bysu/mail  you account is not a mailbox

緣由是我建立了一個mail 的文件夾,刪掉,經過touch建立一個mail空白文件,付600權限。

繼續測試,繼續報錯。

Couldn't lock /home/bysu/sent

文件存在,權限沒問題。百度了各類解決方法,別人的方法,不適用。搞了一個晚上沒搞好,終於無奈地睡覺去了。早上上班繼續鼓搗,終於看到有一我的的配置是絕對路徑,鬼使神差地改爲絕對路徑,問題得以解決。

----------------------------------------郵件發送設置完畢-----------------------------------------

開機自動發送郵件,不知道怎麼老是啓動不成功。只能退一步,經過用戶登陸後,發送ip。可能有人會想,若是我能登陸了,幹嗎還有發送ip?有道理,我開始一瞬間也是這麼想的。繼續一想,我可讓它開機自動登陸,不就會發送ip郵件了嗎?嗯,但是有一個弊端,就是每鏈接一個ssh上來,都會發送一份關於ip的郵件給你,讓你不得不懷疑本身的智商。姑且算了,沒那麼多精力糾結這個問題,後續再優化。

那就先來一個開機自動登陸用戶(bysu)吧

建立文件

sudo vi /etc/systemd/system/getty@tty1.service.d/override.conf

寫入以下內容,下面的username替換成你須要的登陸名便可。

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

自動登陸搞定。那麼就在/etc/profile.d/目錄下建立一個發送ip郵件的腳本sendip.sh

#!/bin/bash
# check network availability 
echo `date` > /home/bysu/profile.sendip
while true
do
TIMEOUT=5
SITE_TO_CHECK="www.163.com"
RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
if [ $RET_CODE==200 ]; then
echo "Network OK, will send mail..."
break
else
echo "Network not ready, wait..."
sleep 1s
fi
done
# get the IP address of eth0, e.g. "192.168.16.5" 
ETH0_IP_ADDR=`curl ifconfig.me`

# send the Email 
echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxxx01873@qq.com

獲取本機公網ip

編寫實現以下功能的腳本:

1.獲取公網ip;

curl ifconfig.me

2.聯網後,發送郵件;

#!/bin/bash
# check network availability 
while true
do
TIMEOUT=5
SITE_TO_CHECK="www.163.com"
RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
if [ $RET_CODE==200 ]; then
echo "Network OK, will send mail..."
break
else
echo "Network not ready, wait..."
sleep 1s
fi
done
# get the IP address of eth0, e.g. "192.168.16.5" 
ETH0_IP_ADDR=`curl ifconfig.me`

# send the Email 
echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxxx01873@qq.com

3.10分鐘以後,不能聯網,自動重啓電腦。

4.開機後,自動執行以上腳本

 

========請忽略後面內容=====桌面安裝=====請忽略後面內容=====================

https://wiki.archlinux.org/index.php/Desktop_environment#List_of_desktop_environments

https://wiki.archlinux.org/index.php/Enlightenment_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

http://www.viseator.com/2017/05/19/arch_setup/

安裝X窗口系統,QT編程環境(九)


項目展現中,ArchLinux系統的字符界面,有點寒磣,安裝圖像界面也是必不可少的。

ArchLinux中安裝X窗口系統比較簡單:

[root@alarmpi ~]# pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
安裝顯示卡驅動
[root@alarmpi ~]# pacman -S xf86-video-fbdev

這樣你能夠在終端用startx啓動X窗口系統了:

[root@alarmpi ~]# startx

啓動之後發現一片空白,只有一個光標,這是由於尚未安裝桌面系統,咱們能夠安裝openbox 等軟件。

咱們的項目中不須要這些,就不安裝了。

咱們還須要一個圖形界面的軟件環境,如今QT比較流行,就使用它了:

[root@alarmpi ~]# pacman -S qt

有了QT咱們能夠開發項目須要的圖形界面了!

vnc:

https://wiki.archlinux.org/index.php/TigerVNC

 

 

 

package sendEmail;

/**
 * @author 蘇寶伢 E-mail:by.su@qq.com
 * @version 建立時間: 2017年11月3日 上午10:52:49
 */
public class Mail {

	public static final String ENCODEING = "UTF-8";
	private String host = "smtp.163.com"; // 服務器地址
	private String sender = "xuda27@163.com"; // 發件人的郵箱
	private String receiver = "xuda27@qq.com"; // 收件人的郵箱
	private String name = "達達軟件團隊"; // 發件人暱稱
	private String username = "xuda27@163.com"; // 帳號
	private String password = "客戶端受權碼"; // 客戶端受權碼密碼
	private String subject = "[達達軟件]找回您的賬戶密碼"; // 主題
	private String message = "你的驗證碼是:8988"; // 信息(支持HTML)

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getSender() {
		return sender;
	}

	public void setSender(String sender) {
		this.sender = sender;
	}

	public String getReceiver() {
		return receiver;
	}

	public void setReceiver(String receiver) {
		this.receiver = receiver;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}
package sendEmail;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;




/**
 * @author 蘇寶伢 E-mail:by.su@qq.com
 * @version 建立時間: 2017年11月3日 上午10:53:44
 */
public class MailUtil {

	public boolean send(Mail mail) {
		// 發送email
		HtmlEmail email = new HtmlEmail();
		try {
			// 這裏是SMTP發送服務器的名字:163的以下:"smtp.163.com"
			email.setHostName(mail.getHost());
			// 字符編碼集的設置
			email.setCharset(Mail.ENCODEING);
			// 收件人的郵箱
			email.addTo(mail.getReceiver());
			// 發送人的郵箱
			email.setFrom(mail.getSender(), mail.getName());
			// 若是須要認證信息的話,設置認證:用戶名-密碼。分別爲發件人在郵件服務器上的註冊名稱和密碼
			email.setAuthentication(mail.getUsername(), mail.getPassword());
			// 要發送的郵件主題
			email.setSubject(mail.getSubject());
			// 要發送的信息,因爲使用了HtmlEmail,能夠在郵件內容中使用HTML標籤
			email.setMsg(mail.getMessage());
			// 發送
			email.send();
			return true;
		} catch (EmailException e) {
			e.printStackTrace();
			return false;
		}
	}

	public static void main(String[] args) {
		Mail mail = new Mail();
		new MailUtil().send(mail);
	}
}

http://download.oracle.com/otn-pub/java/javamail/1.4.7/javamail1_4_7.zip?AuthParam=1509692636_d575cf8989d8b2505af4928cf5fca06d

 

http://mirror.bit.edu.cn/apache//commons/email/binaries/commons-email-1.5-bin.tar.gz

http://mirror.bit.edu.cn/apache//commons/email/source/commons-email-1.5-src.tar.gz

 

須要用到的Linux知識:

開機自啓動

樹莓派開機自啓動程序(Arch Linux 版本)

如何讓樹莓派開機後自動啓動用戶的程序或者執行腳本?
 
不一樣的Linux發行版有不一樣的自啓動機制,如RedHat有 /etc/rc.local 文件,在裏面寫上要執行的命令就能夠開機執行。 Arch Linux 採用的是守護進程的機制(daemon)。 在Arch Linux中, 守護進程是用systemd管理的. 用戶用systemctl命令來管理. systemctl讀取.service文件中包含怎麼和何時啓動相關的進程. Service的文件保存在/{etc,usr/lib,run}/systemd/system中. 看看systemd#Using units 有關怎麼使用systemctl管理守護進程的完整信息.
 
開機時自動啓動
 
在啓動的時候添加,刪除服務使用 systemctl enable|disable service_name命令
 
手動啓動
 
在系統運行時啓動,中止服務, 使用 systemctl start|stop service_name命令.
 
重啓服務
 
爲了重啓服務, 使用 systemctl restart service_name命令.
 
查看運行狀態
 
查看當前服務的運行狀態, 使用 systemctl status service_name命令.
 
檢查服務是否開機啓動
 
檢查服務是否開機啓動,使用 systemctl is-enabled service_name; echo $?命令.
 
手動添加開機運行的服務
 
ln -sf /lib/systemd/system/ /etc/systemd/system/
 
demo:
 
1 將腳本寫入/etc/rc.local
 
++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#!/bin/bash
 
# this file defines the commands that will be executed at system startup
 
echo "exect the application /home/pi/hello" > /dev/ttyAMA0
 
./home/hello
 
++++++++++++++++++++++++++++++++++++++++
 
2 添加可執行權限
 
chmod +x /etc/rc.local
 
3 建立服務文件 /usr/lib/systemd/system/rc-local.service
 
++++++++++++++++++
 
[Unit] Description=/etc/rc.local Compatibility
 
ConditionPathExists=/etc/rc.local
 
[Service]
 
Type=forking
 
ExecStart=/etc/rc.local start
 
TimeoutSec=0
 
StandardOutput=tty
 
RemainAfterExit=yes
 
SysVStartPriority=99
 
[Install]
 
WantedBy=multi-user.target
 
+++++++++++++++++++++++++
 
4 添加軟連接
 
cd /etc/systemd/system/multi-user.target.wants
 
ln -s /usr/lib/systemd/system/rc-local.service rc-local.service
 
5 啓用服務
 
systemctl enable rc-local.service
 
6測試效果
 
重啓
 
reboot
 
或者 直接啓動服務
 
systemctl start rc-local.service
 
若是系統啓動後,程序確實執行了,則表示自啓動設置成功

http://www.linuxidc.com/Linux/2013-05/84748.htm

相關文章
相關標籤/搜索