Tag: FreeBSD
Shell Script 很多時需要讀取目錄內容, 例如備份或日誌檔案輪替等。以下是 Shell Script 讀取目錄內容的方法。 例如想讀取所有 /var/log 下的檔案, 可以這樣寫: 如果只想列出 /var/log 錄下, 所有以 .log 作結尾的檔案, 可以這樣寫:
寫程式時很多時候需要檢查檔案或目錄是否存在, 在 Shell Script 檢查檔案及目錄是否存在, 可以在 if 條件判斷式裡面加上 -e 或 -d 實現, 以下是具體寫法: 檢查檔案是否存在: 上面的 if 判斷式也可以用一行來實現: 檢查目錄是否存在: 用一行來實現上面的程式碼: 其中一個十分實用的例子, 是檢查檔案或目錄是否存在, 如果不存在就便宜檔案或目錄: This is the best practice to check …
HTTP 伺服器在高負載時反應會變慢, 但檢視系統的使用資源, 例如 CPU, 記憶體及 Load Average 則很正常, 當重新啟動 HTTP 伺服器後, 問題又暫時得以解決。用以下 netstat 檢查連線的統計資料: # netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort …
有時在 Shell Script 需要檢查輸入的參數數量, 在 Shell Script 要檢查輸入的參數數量, 可以直接用 $# 變數取得, 例如建立以下 Shell Script: 將以上內容儲存成 test.sh 後, 並給予可執行權限, 可以嘗試執行以下指令: $ test.sh 1 2 3 3 上面在執行 test.sh 時, 輸入了 …
除了在 Linux 的主機外, 在其他類型的主機也經常需要檢查埠號是否有開啟埠號, 例如要測試主機的服務是否正常。 以下是分別用 nc, nmap 及 telnet 測試埠號是否有開啟的方法。 nc (netcat) nc 的意思是 netcat, nc 可以讀取經過 TCP 及 UDP 的網路連線資料, 是一套很實用的網路除錯工具。 在 CentOS 用 yum 安裝 nc: …
PuTTY 是一個開源的 SSH 客戶端, 除了 SSH 外, 也支援 Telnet 及 Rlogin 等多種通訊協定, 是 Windows 十分熱門的 SSH 客戶端, 除了 Windows 版外, 也提供 Linux 版。 PuTTY 對上一個版本 0.70 已經是 2017 年 …
Linux 很多設定檔都會以 “#” 字符開頭作為註解, 例如: # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; 有些情況是要將註解行及空白行刪除, 這樣可以用 grep 指令實現, 語法是: /linux/grep $ grep -v ^\# config.conf | grep . 或者 /linux/grep …
基於保安理由, 很多伺服器都會禁止 root 登入 SSH, 我認為這個設定也是必須的。在一些內部測試用的伺服器, 為了方便可能會允許 root 登入, 另一個較好的做法是設定只讓個別 IP 用 root 帳號登入 SSH. 透過 sshd 的 “Match Address” 便可以實現, 除了登入 root 帳號外, 也可以設定其他帳號, 只允許個別 IP 登入。 首先開啟 …
wget 是很常用的 Linux 下載工具, 支援 HTTP, HTTPS, FTP 等通訊協定下載檔案, 但如果有些下載的檔案是需要支援 cookie 的話, 直接使用 wget 預設選項便不能下載了。 另一種情況是需要輸入使用者名稱及密碼, 然後將使用者名稱及密碼儲存 cookie 內, 這樣也是不能下載。 解決方法是先用 wget 開啟 cookie, 並將 cookie 資訊儲存到檔案, 然後再執行 wget …
TCP wrappers 是主機存取控制列表系統, 作用是限制 IP, hostname 存取 TCP 網路。TCP wrappers 透過以下兩個設定檔設定過濾的 IP: /etc/hosts.allow /etc/hosts.deny 當客戶端嘗試從遠端連線時, 以從上面兩個檔案讀取規則, 決定客戶端的連線是允許還是禁止。設定 /etc/hosts.allow 及 /etc/hosts.deny 的格式是這樣: daemon_list : client_list 上面三個欄位的意思是: daemon_list: 設定的 daemons, 用逗號 …