timmy / ☁️ GCP 指令大全:靜態 IP、VM 操作、SSH 一次搞懂
0 beğeniler
0 çatallar
3 dosyalar
Son aktivite 8 months ago
從專案切換、建立靜態 IP,到 VM 外部 IP 更換與 SSH 連線,全套 gcloud CLI 操作全收錄,超實用筆記!🛠️
| 1 | # 設定當前使用的 GCP 專案 |
| 2 | gcloud config set project <YOUR_PROJECT_ID> |
| 3 | gcloud config set project my-gcp-project-123456 |
| 4 | |
| 5 | # 查詢目前帳戶下的所有 Compute Engine 虛擬機(VM) |
| 6 | gcloud compute instances list |
| 7 | |
| 8 | # 在 GCP 中建立一個靜態 IP |
| 9 | gcloud compute addresses create <STATIC_IP_NAME> --region <REGION> |
| 10 | gcloud compute addresses create my-static-ip --region us-central1 |
timmy / 使用 zmq 進行跨進程或分散式訊息傳遞
0 beğeniler
0 çatallar
2 dosyalar
Son aktivite 9 months ago
zmq(ZeroMQ)是一個高效能的訊息佇列庫,可用於進程間通訊(IPC)、分散式系統與即時訊息傳輸,適用於微服務架構、物聯網(IoT)和高效能計算應用。
| 1 | import zmq |
| 2 | |
| 3 | # 設置 ZeroMQ 上下文 |
| 4 | context = zmq.Context() |
| 5 | socket = context.socket(zmq.REP) # 設定為回應 (REP) 模式 |
| 6 | socket.bind("tcp://*:5555") # 監聽 5555 埠口 |
| 7 | |
| 8 | print("伺服器啟動,等待客戶端請求...") |
| 9 | |
| 10 | while True: |
Son aktivite 10 months ago
這段程式碼透過嘗試建立與 Google DNS 伺服器(8.8.8.8 的 53 埠)的 TCP 連線,來檢查網路是否正常連接,成功連線表示網路通暢,否則則視為網路有問題。
| 1 | import socket |
| 2 | |
| 3 | def is_connected(host='8.8.8.8', port=53, timeout=3): |
| 4 | """ |
| 5 | 嘗試連線到指定的 host 與 port,預設為 Google 的 DNS 伺服器。 |
| 6 | """ |
| 7 | try: |
| 8 | socket.setdefaulttimeout(timeout) |
| 9 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 10 | s.connect((host, port)) |
timmy / Ping 網路連線檢查工具
0 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months ago
這段程式碼透過多次執行系統的 ping 指令來測試指定主機(預設為 8.8.8.8)的連線狀態,並根據多次成功的回應判斷網路是否穩定連通。
| 1 | import subprocess |
| 2 | import platform |
| 3 | import time |
| 4 | |
| 5 | def ping_once(host): |
| 6 | """ |
| 7 | 使用系統的 ping 指令對指定 host 發送一次封包, |
| 8 | 回傳 True 代表 ping 成功,False 代表失敗。 |
| 9 | """ |
| 10 | # 根據作業系統決定參數:Windows 用 -n,其他平台用 -c |
timmy / SSH 透過跳板機自動代理連線
0 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months 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 / 更改 Linux 主機名稱並更新 /etc/hosts
1 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months 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 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months 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 / 強化的 iptables 防火牆規則設定
0 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months 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 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months 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 |
timmy / IP 位址查詢與解析
0 beğeniler
0 çatallar
1 dosyalar
Son aktivite 10 months ago
這個 Bash 腳本用於 查詢目前裝置的公網 IP 及其地理資訊。它會先檢查系統是否安裝了 curl 和 jq(jq 用於解析 JSON),然後使用 curl 向 ip-api.com 發送請求,獲取目前裝置的 IP 位址、國家、城市、ISP、時區等資訊,並透過 jq 以可讀格式輸出。這適用於 網路診斷、IP 追蹤、地理位置查詢或伺服器網路狀態檢測。
| 1 | #!/bin/bash |
| 2 | |
| 3 | SHELL=/bin/sh |
| 4 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin |
| 5 | TZ="Asia/Taipei" |
| 6 | export PATH |
| 7 | export LANG=en_US.UTF-8 |
| 8 | export LANGUAGE=en_US:en |
| 9 | |
| 10 | # Check if curl is installed |
Daha yeni
Daha eski