以下是繼續上回未完的升版作業, 參考下面幾篇 :
# 樹莓派 Raspbian 升版
# 樹莓派 Wifi 固定 IP 的新作法
# 利用樹莓派的 Python 程式定時回報外網 IP 的方法 (Heart beat)
# 樹莓派自動偵測網路斷線時重開機的方法
# 樹莓派遠端連線 VNC Connect 設定
# 在樹莓派上安裝 cURL 與設定 Crontab
# 樹莓派常用的 Linux 指令
# 樹莓派 Raspberry Pi 文章列表
另外找到一篇寫得很好的 Crontab 教學 :
# cron jobs crontab 排程教學
首先是準備中做 : 備份原系統資料, 步驟如下 :
1. 用 WinSCP 備份 /home/pi 底下的檔案到 PC
主要是 reportop2.py 與 reportip3.py 這兩個檔案.
2. 記錄目前的 crontab 內容 :
pi@raspberrypi:~ $ crontab -l
*/10 * * * * /usr/bin/python2 /home/pi/reportip2.py
0 * * * * sudo /usr/local/bin/checkwifi.sh
30 * * * * /usr/bin/python3 /home/pi/reportip3.py
3. 備份 checkwifi.sh 內容 :
pi@raspberrypi:~ $ cat /usr/local/bin/checkwifi.sh
ping -c4 192.168.2.2 > /dev/null
if [ $? != 0 ]
then
sudo reboot
fi
接下來就可以進行 SD 卡更換作業, 先下 sudo poweroff 停機, 更換 SD 卡後開機, 然後進行下列程序以恢復自動通知外網 IP 與自動偵測網路斷線時重開機的功能 :
1. 更改固定 IP 與 DNS 伺服器設定 :
將 static routers 改為 192.168.2.2
鄉下的信舟 AP 路由器 IP 是 192.168.2.2, 而高雄的卻是 192.168.2.1.
$ sudo nano /etc/dhcpcd.conf
$ sudo cat /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.2.192
static routers=192.168.2.2
static domain_name_servers=192.168.2.2
注意, domain_name_servers 要設與 routers 相同 (即無線基地台 IP), 或者設8.8.8.8 (Google Public DNS) 亦可.
2. 將 reportip2.py, reportip3.py, checkwifi.sh 用 WinSCP 傳回 /home/pi 下.
3. 安裝 dos2unix 將 checkwifi.sh 轉成 UNIX 格式, 改為 775 權限後複製到 /usr/local/bin 底下 :
pi@raspberrypi:~ $ sudo apt-get install dos2unix
pi@raspberrypi:~ $ dos2unix checkwifi.sh
pi@raspberrypi:~ $ sudo cp checkwifi.sh /usr/local/bin/checkwifi.sh
pi@raspberrypi:~ $ sudo chmod 775 /usr/local/bin/checkwifi.sh
pi@raspberrypi:~ $ sudo /usr/local/bin/checkwifi.sh
4. 更改 reportip2.py, reportip3.py 權限為可執行 :
pi@raspberrypi:~ $ sudo chmod +x /home/pi/reportip2.py
pi@raspberrypi:~ $ sudo chmod +x /home/pi/reportip3.py
5. 編輯 root 權限的 crontab 定時執行 reportip3.py, checkwifi.sh :
pi@raspberrypi:~ $ sudo crontab -e (注意, 須用 sudo)
0 * * * * sudo /usr/local/bin/checkwifi.sh
30 * * * * /usr/bin/python3 /home/pi/reportip3.py
30 * * * * /usr/bin/python3 /home/pi/reportip3.py
這回我捨棄 reportip2.py, 不再比較 IP 變化, 固定每小時回報 IP. 改好 crontab 後在 30 分時檢查有收到郵件通知目前 IP :
6. 登入 VNC 設定 Cloud Connection :
參考 "樹莓派遠端連線 VNC Connect 設定", 登入 VNC Cloud, 可不需要 IP 即可透過 VNC 雲端連線 Pi 3.
以上就順利完成 SD 卡升級作業了. 用 df -h 查詢 SD 卡使用情形 :
pi@raspberrypi:~ $ df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/root 30G 4.5G 24G 17% /
devtmpfs 460M 0 460M 0% /dev
tmpfs 464M 6.8M 457M 2% /dev/shm
tmpfs 464M 18M 446M 4% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 464M 0 464M 0% /sys/fs/cgroup
/dev/mmcblk0p1 44M 23M 22M 51% /boot
tmpfs 93M 0 93M 0% /run/user/1000
用掉 4.5G, 還有 24G 可用, 比以前大多了.
但完成後用瀏覽器上網, 卻發現連 Google 都無法連線, 出現如下錯誤 :
ping : www.google.com.tw 解析名稱時發生暫時性的錯誤
查詢網路找到下面這篇 :
# 解决树莓派连载路由器上后无法解析域名导致无法上网的问题
原來還要修改 /etc/resolv.conf, 將原先在高雄用的路由器 IP=192.168.2.1 改為鄉下的 192.168.2.2, 上面那篇是改為 8.8.8.8, 這是 Google Public DNS, 參考 :
# Google Public DNS上網跑更快,用戶端趕快更換IPv4 DNS設定8.8.8.8與8.8.4.4
pi@raspberrypi:~ $ ping www.google.com.tw
ping: www.google.com.tw: 解析名稱時發生暫時性的錯誤
pi@raspberrypi:~ $ sudo cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.2.1
pi@raspberrypi:~ $ sudo nano /etc/resolv.conf
pi@raspberrypi:~ $ sudo cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.2.2
這樣再 ping 就有回應了, 瀏覽器也能上網了 :
pi@raspberrypi:~ $ ping www.google.com.tw
PING www.google.com.tw (172.217.27.131) 56(84) bytes of data.
64 bytes from tsa03s02-in-f3.1e100.net (172.217.27.131): icmp_seq=1 ttl=55 time=45.9 ms
64 bytes from tsa03s02-in-f3.1e100.net (172.217.27.131): icmp_seq=2 ttl=55 time=48.8 ms
64 bytes from tsa03s02-in-f3.1e100.net (172.217.27.131): icmp_seq=3 ttl=55 time=48.6 ms
64 bytes from tsa03s02-in-f3.1e100.net (172.217.27.131): icmp_seq=4 ttl=55 time=49.3 ms
--- www.google.com.tw ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 45.925/48.179/49.303/1.342 ms
OK, 現在開始要用這台主機做測試運算了!
2019-04-07 補充 :
下午發現沒收到 IP 信件, 檢查發現 /etc/resolv.conf 內容又被改回 nameserver 192.168.2.1, 研判是有發生系統重啟, 檢查 /etc/dhcpcd.conf 發現昨天忘記改最後一航 static domain_name_servers 設定, 仍然是 192.168.2.1, 導致系統重啟重新設定 /etc/dhcpcd.conf 時又把 /etc/resolv.conf 內容改為 192.168.2.1, 已經修正上面設定程序 1.
沒有留言 :
張貼留言