timmy / Raspberry Pi 環境監測系統

0 likes
0 forks
3 files
Last active 1 year ago
此系統使用 Raspberry Pi 讀取 DHT11 感測器的溫濕度資料,並根據溫度範圍控制 LED 燈號。資料會定時儲存至 MySQL 資料庫,並透過 schedule 套件自動執行。程式透過 Supervisor 設定為背景服務,確保持續執行並記錄日誌。
1 CREATE DATABASE environment;
2
3 USE environment;
4
5 CREATE TABLE environment_data (
6 id INT AUTO_INCREMENT PRIMARY KEY,
7 humidity FLOAT NOT NULL,
8 temperature FLOAT NOT NULL,
9 recorded_at DATETIME DEFAULT CURRENT_TIMESTAMP
10 );

timmy / 釋放 Linux 記憶體快取

0 likes
0 forks
1 files
Last active 1 year ago
這段 Bash 腳本用來 釋放 Linux 系統的快取記憶體,確保系統資源得以回收並提升效能。它會先執行 sync 指令將文件系統的變更寫入磁碟,然後透過 echo 3 > /proc/sys/vm/drop_caches 清除 頁面快取、目錄條目及 inode 快取。此腳本需要 root 權限,適用於 伺服器維護、效能測試或記憶體回收作業。
1 #!/bin/bash
2
3 # 確保腳本以 root 身份執行
4 if [ "$EUID" -ne 0 ]; then
5 echo "請使用 root 權限執行此腳本。"
6 exit 1
7 fi
8
9 # 同步文件系統資料到磁碟,防止資料遺失
10 sync
Last active 1 year ago
這段 Bash 腳本設定了 環境變數(如 PATH 和 TZ 時區為 台北時間),然後執行 arp-scan 指令來掃描本地網路(--localnet)的 所有設備的 MAC 和 IP 地址。此腳本適用於 網路管理、設備偵測、安全監控 或 尋找局域網內的未知設備,但需要 root 權限 才能執行 arp-scan。
1 #!/bin/bash
2
3 # 定義預設的配置設定
4 SHELL=/bin/sh
5 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
6 TZ='Asia/Taipei'
7
8 # 將配置設定寫入環境變數
9 export PATH
10 export LANG=en_US.UTF-8
Last active 1 year ago
這段 Python 程式碼使用 asyncio 來 非同步執行系統指令,透過 asyncio.create_subprocess_exec() 建立子行程,並並行執行多個指令(如 ping 和 ls)。它適用於 非同步處理系統指令、提升效能、避免阻塞主執行緒,適合用於 自動化腳本、伺服器管理或批次處理 任務。
1 import asyncio
2
3 async def run_command(*args):
4 # 建立子行程
5 process = await asyncio.create_subprocess_exec(
6 *args,
7 stdout=asyncio.subprocess.PIPE,
8 stderr=asyncio.subprocess.PIPE)
9
10 # 等待子行程完成

timmy / 批量顯示 Python 檔案內容

0 likes
0 forks
1 files
Last active 1 year ago
這段 Bash 指令使用 find 指令在當前目錄(.)及其子目錄中 搜尋所有 .py(Python)檔案,並對每個找到的檔案執行 顯示檔名並輸出其內容。這適用於 快速查看專案中的 Python 檔案,方便 程式碼審查、備份或檢查腳本內容。
1 #!/bin/bash
2 find . -name "*.py" -exec sh -c 'echo "=== {} ==="; cat "{}"; echo ""' \;
Last active 1 year ago
這段 Bash 腳本用於更改系統的主機名稱:它先取得目前的主機名稱並從 /etc/hosts 中移除該名稱的條目,接著使用 hostnamectl 指令設定新的主機名稱,最後將新主機名稱加入到 /etc/hosts 文件中,並輸出成功更新的提示訊息。
1 #!/bin/bash
2
3 # 請將 'new_hostname' 替換為你要設定的新主機名稱
4 NEW_HOSTNAME="new_hostname"
5
6 # 獲取原本的主機名稱
7 OLD_HOSTNAME=$(hostname)
8
9 # 刪除 /etc/hosts 中原本的主機名稱
10 sudo sed -i "/127.0.0.1 $OLD_HOSTNAME/d" /etc/hosts
Last active 1 year ago
這段 Bash 腳本設定了基本的環境變數,然後使用 curl 指令從 ifconfig.me 取得目前裝置的 公網 IP 位址,並將結果顯示在終端機。這適用於 快速查詢外部 IP、網路偵錯、伺服器監控,特別是在 NAT 環境或動態 IP 網路 中檢測目前外部 IP 是否變更。
1 #!/bin/bash
2
3 # 定義預設的配置設定
4 SHELL=/bin/sh
5 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
6 TZ='Asia/Taipei'
7
8 # 將配置設定寫入環境變數
9 export PATH
10 export LANG=en_US.UTF-8

timmy / Dnsmasq 設定與網路管理

0 likes
0 forks
1 files
Last active 1 year ago
這份 dnsmasq 設定檔 用於 管理 DNS 和 DHCP 服務,提供 本機網路名稱解析、靜態 IP 配置、DNS 轉發、快取與封鎖特定域名。它設定了 Google、Hinet 作為上游 DNS,開啟 DNS 查詢日誌,並定義 DHCP 位址範圍、靜態 IP 綁定與特定域名解析。適用於 內部網路架構、加速 DNS 解析、提升隱私安全及廣告封鎖 等場景。
1 bogus-priv # Block fake private IP responses
2 no-resolv # Ignore /etc/resolv.conf for upstream DNS
3 dns-forward-max=150 # Limit parallel DNS queries to 150
4 clear-on-reload # Clear cache when dnsmasq reloads
5 domain-needed # Ignore queries without a domain name
6 no-negcache # Do not cache negative (non-existent) DNS responses
7 no-poll # Do not poll /etc/resolv.conf for changes
8 strict-order # Use upstream DNS servers in the order they are listed
9
10 # AdGuard DNS 封鎖廣告和追蹤器。

timmy / 系統日誌清理與維護

0 likes
0 forks
1 files
Last active 1 year ago
這個 Bash 腳本用於 清理 Linux 系統的日誌檔案,主要包括 身份驗證日誌 (auth.log)、登入歷史 (wtmp, btmp, lastlog)、系統日誌 (syslog)、郵件日誌 (mail.log),並刪除舊的壓縮日誌 (.gz) 以釋放空間。此外,它會 重設失敗登入記錄 (faillog),確保 lastlog 權限正確,適用於 系統維護、隱私保護及釋放伺服器磁碟空間。
1 #!/bin/bash
2
3 # Define log file paths
4 AUTH_LOG="/var/log/auth.log"
5 BTMP_LOG="/var/log/btmp"
6 WTMP_LOG="/var/log/wtmp"
7 LASTLOG="/var/log/lastlog"
8 SYSLOG="/var/log/syslog"
9 MAIL_LOG="/var/log/mail.log"