国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

iredmail下安裝腳本分析(一)---get_all.sh 文件所在目錄為PKGS

2020-07-27 19:04:41
字體:
來源:轉載
供稿:網友

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

主站蜘蛛池模板: 平泉县| 汉源县| 工布江达县| 申扎县| 上林县| 通山县| 碌曲县| 鄂尔多斯市| 瓦房店市| 潞城市| 斗六市| 浪卡子县| 巨鹿县| 永安市| 哈巴河县| 揭西县| 彰化市| 龙井市| 吉隆县| 汽车| 临清市| 星子县| 临武县| 吕梁市| 民权县| 区。| 株洲市| 交城县| 金平| 右玉县| 祁阳县| 咸丰县| 宁海县| 咸宁市| 疏附县| 海原县| 宁化县| 广东省| 循化| 缙云县| 高尔夫|