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 |
timmy / SSH 透過跳板機自動代理連線
0 likes
0 forks
1 files
Last active 1 year ago
此 SSH 設定根據目標 IP 或域名,透過不同的跳板機 (ProxyCommand) 進行連線,確保內外部網路存取的靈活性與自動化。
| 1 | Host *.internal.local |
| 2 | ProxyCommand bash -c 'timeout 3 nc -z %h %p || ssh -W %h:%p jump.internal.example.com' |
| 3 | |
| 4 | Host * |
| 5 | ProxyCommand bash -c 'timeout 3 nc -z %h %p || ssh -W %h:%p jump.external.example.com' |
| 6 | |
| 7 | Host 192.168.0.* |
| 8 | ProxyCommand bash -c 'timeout 3 nc -z %h %p || ssh -W %h:%p jump1.example.com' |
| 9 | |
| 10 | Host 172.16.*.* |
timmy / 使用 arp-scan 掃描區域網路中的設備
0 likes
0 forks
1 files
Last active 1 year ago
| 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 / 使用 asyncio 執行非同步 Shell 命令
0 likes
0 forks
1 files
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 ""' \; |
timmy / 更改 Linux 主機名稱並更新 /etc/hosts
1 likes
0 forks
1 files
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 |
timmy / 查詢外部 IP 位址並設定環境變數
0 likes
0 forks
1 files
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
| 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 封鎖廣告和追蹤器。 |