iredmail是一套以postfix為核心的整合郵件系統的安裝腳本,可以達到快速部署郵件服務器的目的。
經過上面的一系列分析后,進入到獲取安裝包的步驟,作者在此處單獨寫了一個腳本,get_all.sh,我們繼續分析這個腳本
_ROOTDIR="$(pwd)"
CONF_DIR="${_ROOTDIR}/../conf"
. ${CONF_DIR}/global
. ${CONF_DIR}/core
. ${CONF_DIR}/iredadmin
程序的意思是利用pwd獲取當前目錄,并定義為_ROOTDIR, 接著根據_ROOTDIR,獲得CONF目錄的具體位置。從而引入global, core ireadmin
iredadmin 文件里定義了一系列的關于版本和關于iredadmin的變量,估計在后面下載文件時可能會用到,如圖

接著分析。。。。
check_user root
check_hostname
check_runtime_dir
根據我的經驗,顯然check_user check_hostname check_runtime_dir 都是SHELL的函數,我們來一一分析
check_user 定義在conf/core文件中,具體的代碼如下:
check_user(){ # Check special user privilege to execute this script. if [ X"$(id -u)" != X"$(id -u ${1})" ]; then ECHO_ERROR "Please run this script as user: ${1}." exit 255 else if [ X"$(id -u)" == X"0" ]; then export PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" else : fi fi}id -u 顯然是獲得登錄用戶的ID,在調用函數時,check_user root ,顯然是根據返回結果判斷是否為root,如果不是root,就返回錯誤。
exit 255 關于這個,大家參考這篇文章,http://m.survivalescaperooms.com/article/73377.htm
else之后的判斷不知道是否有點多余,不過作者可能是為了保險,再次判斷是否登錄用戶的ID為0,從而設置PATH的值
$PATH:決定了shell將到哪些目錄中尋找命令或程序,PATH的值是一系列目錄,當您運行一個程序時,Linux在這些目錄下進行搜尋編譯鏈接。
目前設置的這個值里,比正常的多了/root/bin/,不知道這步在后面的程序中是否起著什么作用,暫時看不出來。
接著。。。
check_hostname 是分析服務器主機名是否符合規則的,代碼如下:
check_hostname(){ echo ${HOSTNAME} | grep '/.' &>/dev/null [ X"$?" != X"0" ] && / ECHO_ERROR "Please configure a fully qualified domain name (FQDN) in /etc/hosts before we go further./n/nExample:/n/n127.0.0.1 mail.iredmail.org mail localhost/n" && / exit 255}程序的意思是利用${HOSTNAME}獲得主機名,如果主機名里沒. 就判斷主機名為不合理的,接著給出了例子,接著退出程序。
shell的函數都是比較簡單的,接著分析check_runtime_dir,代碼如下:
check_runtime_dir() { [ -d ${RUNTIME_DIR} ] || mkdir -p ${RUNTIME_DIR} # Cleanup rm -f ${RUNTIME_DIR}/.pkg_install_failed &>/dev/null}-d 判斷目錄是否存在
mkdir 主站蜘蛛池模板: 平泉县| 汉源县| 工布江达县| 申扎县| 上林县| 通山县| 碌曲县| 鄂尔多斯市| 瓦房店市| 潞城市| 斗六市| 浪卡子县| 巨鹿县| 永安市| 哈巴河县| 揭西县| 彰化市| 龙井市| 吉隆县| 汽车| 临清市| 星子县| 临武县| 吕梁市| 民权县| 区。| 株洲市| 交城县| 金平| 右玉县| 祁阳县| 咸丰县| 宁海县| 咸宁市| 疏附县| 海原县| 宁化县| 广东省| 循化| 缙云县| 高尔夫|