Shell Scripts

check_wifi_connection.sh(2020-10-26)

樹莓派2B或3B的wifi連線不穩定,以此來強化連接。可搭配root的crontab來使用,若wifi介面斷線,則重新連線,10秒後,如果無法重新連線,則重新開機。當然啦,如果一直連結不上的話,就會陷入無限重新開機的循環!因此,設定crontab時,參數一定要小心,或是把下面程式碼的sleep 10增加到可以手動控制,即使要無限重新開機,也可以手動排除。
#!/bin/bash
NOW=`date "+%Y-%m-%d %H:%M:%S"`
HOST=`hostname`
wlan0=`cat /sys/class/net/wlan0/operstate`
down="down"

if [ "$wlan0" == "$down" ]; then
    ip link set wlan0 down
    ip link set wlan0 up
    /sbin/wpa_cli -i wlan0 select_network 0
    MSG="${NOW}: restart wlan0"
    echo "$MSG"
    sleep 10
    wlan0again=`cat /sys/class/net/wlan0/operstate`
    if [ "$wlan0again" == "$down" ]; then
        MSG="${NOW}: reboot ${HOST}"
        echo "$MSG"
        /sbin/shutdown -r now
    else
        echo "${NOW}: wlan0 is ok"
    fi
else
    echo "${NOW}: wlan0 is ok"
fi

shrink_dir_logs.sh(2020-10-24)

把指定目錄下所有紀錄檔加上時戳後,7z以四核心最高壓縮方式壓縮為以該日命名的壓縮檔且在壓縮之後,刪除已經壓縮的檔案,如下程式碼:
#!/bin/bash
NOW=`date "+%Y-%m-%d_%H-%M-%S"`
TODAY=`date "+%Y-%m-%d"`
for LOGFILE in "$1"/*.log
do
  CMD="mv ${LOGFILE} ${LOGFILE}_${NOW}"
  echo "$CMD"
  $CMD
done
ZIP="7z a $1/${TODAY}.7z $1/*.log_${NOW} -mx9 -mmt=4 -sdel"
echo "$ZIP"
$ZIP
注意:請先安裝7z,安裝方式請查閱各作業系統。
使用方式: ./shrink_dir_logs.sh /home/user/logs

fnts_dir.sh(2020-10-24)

使用script來幫指定目錄下所有檔案加上時戳,如下程式碼:
#!/bin/bash
NOW=`date "+%Y-%m-%d_%H-%M-%S"`
for LOGFILE in "$1"/*
do
  #echo "$LOGFILE"
  CMD="mv ${LOGFILE} ${LOGFILE}_${NOW}"
  echo "$CMD"
  $CMD
done
使用方式: ./fnts_dir.sh /var/logs

fnts.sh(2020-10-24)

使用script來幫檔案加上時戳,就很簡單的四行程式碼:
#!/bin/bash
NOW=`date "+%Y-%m-%d_%H-%M-%S"`
CMD="mv $1 $1$_{NOW}"
$CMD
使用方式: ./fnts.sh fileToTimeStamp.log

樹莓派記錄溫度(175 bytes,2019-06-24)

(參考樂園日記2019-06-26)使用時,記得使用轉向符號,轉入到指定的目錄檔案即可或是於/etc/rc.local呼叫,如下範例:
./status.sh >> /home/pi/status.log &
#!/bin/bash
while true
do
	dt=`date "+%Y-%m-%d %H:%M:%S"`
	echo ${dt}
	cat /sys/class/thermal/thermal_zone0/temp
	top -n1 | awk '/Cpu\(s\):/ {print $2}'
	sleep 30
done
 
上述程式碼,使用http://hilite.me/來渲染python的關鍵字,再根據dark style調整部分的顏色。