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 封鎖廣告和追蹤器。 |
timmy / 強化的 iptables 防火牆規則設定
0 likes
0 forks
1 files
Last active 1 year ago
這個 iptables 防火牆腳本 用於 強化伺服器的網路安全,透過 允許合法流量(如 SSH、HTTP/HTTPS)並封鎖未授權連線,同時防禦各種攻擊(如 暴力破解、SYN Flood、埠掃描、DoS)。此外,它會 記錄異常流量 以便後續分析,並將規則儲存至 /etc/iptables/rules.v4,確保設定在重啟後仍生效。適用於 企業伺服器、內部網路防護及個人伺服器安全強化。
| 1 | #!/bin/bash |
| 2 | |
| 3 | # === Basic Settings === |
| 4 | |
| 5 | # Clear all existing rules |
| 6 | iptables -F |
| 7 | iptables -X |
| 8 | iptables -Z |
| 9 | |
| 10 | # Set default policies: drop all incoming and forwarding traffic, allow outgoing |
timmy / 使用 ipset 建立台灣 IP 位址集
0 likes
0 forks
1 files
Last active 1 year ago
這個 Bash 腳本用於 建立並更新 ipset 規則,將台灣的 IP 網段加入名為 taiwan_ips 的集合,以便在 iptables 防火牆 中使用。它會從 GitHub 下載最新的 台灣 IP 清單 (tw.txt),然後解析其中的 IPv4 網段 並加入 ipset,最後可用於 限制 SSH 存取、流量過濾或強化網路安全,適用於 伺服器管理、防禦異地登入或阻擋非台灣 IP 連線。
| 1 | #!/bin/bash |
| 2 | |
| 3 | # Delete the existing taiwan_ips ipset collection if it exists |
| 4 | ipset destroy taiwan_ips |
| 5 | |
| 6 | # Create a new taiwan_ips ipset collection |
| 7 | ipset create taiwan_ips hash:net |
| 8 | |
| 9 | # Download the Taiwan IP range file using wget (commented out) |
| 10 | wget https://github.com/Loyalsoldier/geoip/raw/release/text/tw.txt -O tw.txt |