Tag: FreeBSD

Shell Script 修改系統帳號密碼

在 Linux 要修改帳號密碼, 可以用 passwd 完成。passwd 需要從 stdin 輸入新密碼, 但很多情況需要用非互動的方式修改, 即一行指令修改密碼。例如用 Shell Script 建立新帳號後, 立即修改新用戶的密碼。以下會示範不用從 stdin 輸入新密碼的情況下, 用一行指令修改帳號密碼的方法。版本較新的 Linux 的 passwd 指令, 支援 –stdin 參數, 即不會要求輸入兩次新密碼作為確認, 這樣只要用 echo 指令將新密碼, 透過管線 …

curl 顯示 HTTP header 檔頭

curl 是 CLI 下的瀏覽器, 有時在 Linux 需要對網頁進行除錯時, 只需要檢視 HTTP 的 header 檔頭資訊, 可以透過 curl 的 -I 參數取得, 例如: $ curl -I https://google.com.hk HTTP/1.1 301 Moved Permanently Location: https://www.google.com.hk/ Content-Type: text/html; …

Linux 找出重覆檔案

當系統使用一段時間後, 裡面會有為數不少重覆的檔案, 以下會介紹使用 rdfind 找出系統重覆的檔案,, Rdfind 的全寫為 redundant data find, 它會在不同的目錄內找出相同的檔案。要安裝 rdfind 只要用系統的套件管理工具安裝即可: $ sudo apt-get install rdfind $ sudo yum install epel-release && $ sudo yum install rdfind …

Linux 下的 &, &&, | 及 || 的用法

在 Linux 下執行指令, 很多時會用到 &, &&, | 及 ||, 以下是它們的用法:& 如果在指令後面加上 & 符別, 即表示指令在背景執行, 例如 my-script.sh &&& 用 “&&” 分開兩個指令, 即第一道指令執行成功後, 才會執行第二道指令, 例如 make && make install| 這是管線的符號, 即是將第一道指令的輸出, 作為第二道指令的輸入, …

Shell Script 使用 #!/usr/bin/env

在 Shell Script 的第一行稱為 shebang, shebang 由 “#!” 開頭, 並在後面加上解譯器的絕對路徑, 即類似:#!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/python如果 Shell Script 不同的平台執行, 指定的解譯器可能位置有所不同, 如果想增加 Shell Script 在不同 Unix Like 環璄的可流動性, 可以使用 /usr/bin/env 作為 shebang.使用方法只要在 /usr/bin/env …

make 及 make clean 的作用

在編譯源代碼安裝軟體時,很熟悉的步驟是 make 及 make install, 例如: # ./configure # make # make install 以下是 make 及 make clean 的分別:make 一般上, make 是 make all 的簡寫,它根據 makefile 的規則,將 C/C++ 檔案編譯成 .o …

Shell Script 產生亂數

Shell Script 提供了 $RANDOM 變數,直接用 echo 印出或調用已經可以產生亂數。用 $RANDOM 產生的隨機數會在 0 – 32767 之間,而每次使用 $RANDOM 後,它便會被定義一個新的數值,以下是使用例子: $ echo $RANDOM 這樣便會印出一個隨機數。以上方法雖然簡單,但最大的問題是不能定義隨機數的長度,因為 $RANDOM 只會產生介乎 0 – 32767 之間的數值。要定義亂數的長度,可以用 awk 來做,例如:以上定義了產生 6 個位長度的亂數,介乎 100000 …

產生 /etc/shadow 格式的加密密碼

Linux 將系統帳號關於密碼的資訊儲存在檔案 /etc/shadow, 而密碼是經過加密。不論基於任何原因, 如果需要手動編輯 /etc/shadow 的密碼, 便需要產生一個與 /etc/shadow 使用相同加密方式的密碼。而且不用安裝其他工具, 用 Python 便可以產生這個加密密碼。在 shadow 內的加密密碼, 以下列格式儲存:$ID$SALT$ENCRYPTED上面的 $ID 是加密方式, $SALT 是一個最多 16 位的隨機字串, $ENCRYPTED 則是 password hash.其中 $ID 分別有以下幾種:$1 -> MD5 …

甚麼是 DNS Non-authoritative answer

用 nslookup 指令查詢域名的 ip 時,會有一行 “Non-authoritative answer”,例如這樣:這裡的 Non-authoritative answer 表示所查詢的 DNS (上面是 8.8.8.8),並不是原始的 DNS 紀錄來源,是由域名所設定的 DNS Server 取得資料。那麼甚麼時候不會出現 Non-authoritative answer 呢,就是直接向域名登記的 DNS 查詢,例如 google.com 使用的 DNS 是 ns1.google.com, 用以下指令查詢便不會出現 Non-authoritative …

擷取 Log 紀錄檔最後 60 分鐘紀錄

Linux 有很多不同種類的 Log 紀錄檔,很多時需要在 log 裡面找資料,但當 log 的體積越來越大時,要查看還真是很吃力。這時可以用不同的 Linux 指令配合使用,將 log 紀錄檔最後的資料抽出,抽出資料的時間可以按需要更改。例如 /var/log/message 預設紀錄檔的格式可以用以下指令:上面指令需要修改最後的檔案名稱,以及 “+%b %_d %H:%M” 這一組參數,需要配合 log 的日期時間格式。另一個例子是 log 裡面不是用一般的日期時間格式,像 QMail 是用 tai64n 格式儲存時間,需要用 tai64nlocal 轉換成普通時間格式,可以用以下指令擷取 /var/log/qmail/smtpd/current 最後 …