Category: Linux

Shell Script 檢查是否有輸入參數

在寫 Shell Script 時, 可以用變數 $1, $2, $3…… 很方便讀取使用者輸入的參數, 以下提供兩個檢查使用者是否有輸入參數的方法。1. $# $# 變數儲存了使用者輸入的參數數量, 如果 $# 是 0, 便表示使用者沒有輸入參數, 而這個變數也可以用作檢查使用者輸入了多少個參數, 具體寫法如下:2. $1 另一種做法是檢查 $1 變數, $1 是使用者輸入的第一個參數, 如果 $1 是空白, 那便表示使用者沒有輸入參數, …

Fail2ban 攔截暴力入侵 WordPress

WordPress 是目前最受歡迎的 CMS, 而針對 WordPress 的攻擊也很多, 本文會講述使用 Fail2ban 攔截對 WordPress 的暴力入侵。如果未安裝 Fail2ban, 先安裝 Fail2ban, 可以參考本站另一篇文章:攔截暴力入侵的 IP — Fail2Ban安裝好 Fail2ban 後, 在 Fail2ban 的 filter 目錄建立 wordpress 的 filter, 以下會以 /etc/fail2ban/filter.d/wordpress.conf …

Shell Script 監測硬碟使用量

對於硬碟空間比較緊張的主機, 尤其是一些 VPS, 定時監測硬碟分割區使用量很有用。以下 Shell Script 可以檢查每個硬碟分割區的使用量, 如果達到預先設定的百份比, 會以電郵通知系統管理員。先建立一支 Shell Script, 以下會用檔案名稱 check-disk.sh 作為例子, 加入以下內容 第 3 行設定系統管理員的電郵, 第 4 行設定發出通知的使用量百份比, 條改好後給 check-disk.sh 執行權限: # chmod +x check-disk.sh 最後將檔案放到 crontab …

對 rsync 實施限速

rsync 是一套 Linux 下的同步備份工具, 對日常備份十分有用。如果是從遠端主機進行備份, 而且備份的檔案容量很大, 有可能會將主機的頻寬全部吃掉, 那便會在備份時影響主機的正常使用。rsync 內建已經支援限速的功能, 只要使用 –bwlimit 參數, 便可以限制傳送檔案時硬碟的 I/O 速度, 從而達到限速的效果。即使是本機備份, –bwlimit 也可以避免備份時系統的負載過高。例如將 I/O 限制為 1000 KBytes, 語法是這樣:備份到逹端主機的做法相同, 只要加上 –bwlimit=速度 便可以:

Shell Script – 發現 Load Average 高自動執行指令

當系統的 Load Average 很高時, 可能面臨當機的風險, 遇到這個問題可以用 Shell Script 定時檢查系統的 Load Average, 當發現 Load Average 到達某一個設定好的數值時, 便自動執行一些指令, 例如重啟服務, kill process 或向系統管理員發出電郵通知等。以下 Shell Script 會透過定時讀取 /proc/loadavg 的數值, 當發現 Load Average 高時 (以下設定為 …

Shell Script 檢查並自動重啟 Apache httpd

如果主機出現問題時, 可能負載過高或者服務當掉, 最理想的做法還是要找出原因, 很多時只要修改一些設定便可以。 早前遇到一位客戶, 他安裝在 VPS 的 Apache 會無故當掉, 間隔由幾小時到一天不等, 檢查後 Load Average 一點也不高, 當掉後只要重新啟動 Apache 便沒問題, 初部估計可能是 mpm_prefork 的設定問題。由於修改後要觀察一段時間, 這段時間 Apache 也可能當掉, 便寫了這支 Shell Script, 會自動檢查 Apache 是否能回應請求, …

Linux 用 rm 刪除檔案及釋放硬碟空間

用 Liunx 的 rm 刪除檔案時, 如果檔案的容量很細小, 通常看不到變化; 但如果檔案的容量很大, 用 df 指令查看硬碟空間是沒有釋放, 但用 du 指令檢視目錄的使用量, 則沒有計算已刪除檔案。出現這個問題的原因, 是已刪除的檔案被其他 process 開啟, 用 lsof 指令可以檢視正在開啟已刪除檔案的 process: # lsof | grep deleted 找到開啟已刪除檔案的 process 後, …

Ubuntu 設定網路固定 IP

Ubuntu 會自動偵測 DHCP 取得 IP, 如果要改成使用固定 IP, 可以使用以下方法, 並以網卡 “ens160” 作為例子。首先開啟檔案 /etc/network/interfaces: $ sudo vi /etc/network/interfaces 找到 dhcp 的一行, 並將那一行註解掉, 這樣會關閉 dhcp 自動取得 ip, 以及加入幾行網路設定, 即改成類似這樣:以上的 netmask 及 gateway 設定需要根據網路環境修改, …

Shell Script 讀取網頁內容儲存到變數

Shell Script 要讀取網頁內容,並將輸出結果儲存到變數,可以用一些在 CLI 下執行的文字瀏覽器,由於很多系統都有安裝 wget 及 curl, 以下文章會介紹使用 wget 及 curl 這兩種方法完成。如果系統並未安裝 wget 及 curl,可以用以下指令安裝,如果已經安裝了,則不用安裝:RHEL, CentOS # yum install curl wget Debian, Ubuntu $ sudo apt-get install curl wget …

curl 略過檢查自簽 SSL 憑證有效性

有時一些內部使用的加密 SSL 網頁使用自簽憑證, 如果用 curl 擷取這些使用自簽憑證的 SSL 網頁內容, 會出現以下錯誤: $ curl https://localhost/ curl: (60) Peer’s certificate issuer has been marked as not trusted by the user. More details here: http://curl.haxx.se/docs/sslcerts.html …