在NIS+automount+異地HOME環境下建立新用戶的腳本

對於用NIS+NFS+automount來管理服務器羣的管理員來講,給服務器創建帳戶以及HOME目錄是件很痛苦的事情,特別說若是有幾臺HOME目錄掛載服務器。過程其實仍是比較簡單的,先在NIS主服務器上創建帳戶,添加掛載路徑到auto.home文件中。而後再將帳戶同步到slave NIS服務器上,再而後再登陸HOME目錄服務器,在其上上創建用戶的HOME目錄,拷貝環境腳本,更改目錄owner權限。整個過程是件很使人鬱悶的事情。bash

乾脆就來用腳原本一步到位吧。小小腳本,內容粗俗不堪,不成敬意。服務器

個人設置環境以下:ssh

上海是NIS服務器, 也爲上海用戶的HOME服務器,IP:192.168.0.2ide

深圳使用上海NIS帳戶,自動掛載本地HOME目錄。IP:  192.168.1.2函數

上海與深圳之間已經設置了免ROOT密碼輸入。spa

HOME目錄所處路徑都爲:  /mnt/homerest

自動掛載HOME的NIS文件:  /etc/auto.home日誌

 

#!/bin/sh server

   
   
   
   
  • ####################################################
  • ## 腳本功能:只須要在主服務器上,輸入用戶名,UID,服務器點,##
  • ## 便可自動建立HOME目錄,帳戶,掛載信息,同步NIS,發送郵件 ##
  • ## 通知給添加人員。不須要登陸各地服務器。算得上減輕負擔的 ##
  • ## 好幫手,但腳本內容缺陷不少,只適合個人服務器環境, ##
  • ## 思路簡單易懂,    ## 
  • #####################################################

################################################ ci

########    define variable      ######## 

################################################ 

 

HOME="/mnt/home" 

DATE=`date +%F-%R` 

 

SOFTWAREGID="502"  #新添加用戶的GID

 

SHENZHEN_IP="192.168.1.2"  #深圳服務器IP地址

SHANGHAI_IP="192.168.0.2"  #上海服務器IP地址

 

LOGFILE="/tmp/logfile.txt"  #臨時的日誌文件。

 

INITIAL_PASSWD="Linux2010"  #初始化密碼

SHENZHEN_BACK_DIRECTORY="/backup/nisdatabase_backup"  #用來保存上海的密碼文件到深圳。

 

######===================================###### 

######   the global function defination  ###### 

######===================================###### 

 

########    read input variable      ######## 

create_account_input() 

echo "What's the username need created:" 

read USERNAME  ##新用戶的用戶名

echo "which site it is?[shanghai/shenzhen]:"  

while read LOCATION  ##新用戶是使用上海,仍是深圳服務器。

do 

case $LOCATION in  ##添加個判斷

shanghai) 

    break;; 

shenzhen) 

    break;; 

*) 

    echo "Wrong site, please try again" 

    ;; 

esac 

done 

echo "What's the USERID: " 

read USERID  #新用戶的UID





 

########    create home function    ######## 

mkdir_home_directory()  ##創建HOME目錄函數。

    case "$LOCATION" in 

    shanghai) 

        if [ ! -d $HOME/$USERNAME ] 

        then 

        mkdir $HOME/$USERNAME 

        cp /etc/skel/.* $HOME/$USERNAME 

        chown -R $USERID $HOME/$USERNAME 

        else 

        exit 1 

        fi  

        ;; 

    shenzhen) 

        ssh $SHENZHEN_IP "mkdir $HOME/$USERNAME" 

        ssh $SHENZHEN_IP "cp /etc/skel/.* $HOME/$USERNAME" 

        ssh $SHENZHEN_IP "chown -R $USERID $HOME/$USERNAME" 

        ;; 

    *) 

        echo "Seems the wrong server site, please check \ 

        if it's shanghai or shenzhen. " 

        break 

        ;; 

    esac     

 

########    create home function    ######## 

add_to_homefile()  ##添加到auto.home中。

    case "$LOCATION" in 

    shanghai) 

      echo "#####  add new user $USERNAME at $DATE by carywu  ####" >> /etc/auto.home 

      echo "$USERNAME     10.18.11.242:/mnt/home/&" >> /etc/auto.home 

        ;; 

    shenzhen) 

        ssh $SHENZHEN_IP "echo '##### add new user $USERNAME at $DATE by carywu' >> /etc/auto.home" 

        ssh $SHENZHEN_IP "echo '$USERNAME   10.28.8.10:/mnt/home/&' >> /etc/auto.home" 

        ;; 

    esac 

 

########    update nis function ######## 

update_nis()  ##同步nis帳戶函數

    cd /var/yp 

    make 

    #/etc/init.d/nis restart 

    echo "we are going to backup system account to shenzhen server......" 

    scp /etc/auto.home  root@$SHENZHEN_IP:$SHENZHEN_BACK_DIRECTORY/auto.home_back_$DATE 

    scp /etc/passwd  root@$SHENZHEN_IP:$SHENZHEN_BACK_DIRECTORY/passwd_back_$DATE 

    scp /etc/shadow  root@$SHENZHEN_IP:$SHENZHEN_BACK_DIRECTORY/shadow_back_$DATE 

    scp /etc/group  root@$SHENZHEN_IP:$SHENZHEN_BACK_DIRECTORY/group_back_$DATE 

#   ssh $SHENZHEN_IP "/etc/init.d/nis restart" 

 

 

########    create account      ######## 

create_account()  ##添加帳戶函數

    echo "Begin to create account for new user......" 

    useradd -u $USERID -g $SOFTWAREGID -M -s /bin/bash -p $INITIAL_PASSWD $USERNAME 

    echo "Begin to create home directory......" 

    mkdir_home_directory 

    echo "Begin to create home automount......" 

    add_to_homefile 

    update_nis 

    echo "update NIS database finished......" 

 

create_samba_account()  ##添加samba帳戶函數

    case "$LOCATION" in 

    shanghai) 

    echo "Begin to create samba user...... " 

    (echo $INITIAL_PASSWD; echo $INITIAL_PASSWD ) |smbpasswd -s -a $USERNAME 

    echo "Checking samba user $USERNAME......" 

    smbclient -L 127.0.0.1 -U $USERNAME%$INITIAL_PASSWD 

    ;; 

    shenzhen) 

    echo "Begin to create samba user......" 

    ssh $SHENZHEN_IP "(echo $INITIAL_PASSWD; echo $INITIAL_PASSWD ) |smbpasswd -s -a $USERNAME " 

    echo "Checking samba user $USERNAME......" 

    smbclient -L $SHENZHEN_IP -U $USERNAME%$INITIAL_PASSWD 

    ;; 

    esac 

 

 

create_log_mail()  ## 添加郵件內容函數

    echo "Your Linux account is:  $USERNAME " >> $LOGFILE 

    echo "Your Initial password is:   $INITIAL_PASSWD  " >> $LOGFILE 

    echo "Your Initial samba password is:   $INITIAL_PASSWD  " >> $LOGFILE 

    if [ $LOCATION == "shanghai" ] 

    then 

    echo "The Linux server is:  $SHANGHAI_IP " >> $LOGFILE 

    else 

    echo "The Linux server is:  $SHENZHEN_IP " >> $LOGFILE 

    fi 

    echo "####################################### " >> $LOGFILE 

    echo "NOTE: You can type yppasswd to change the initial Linux password, \ 

    or type smbpasswd to change the initial samba password. \ 

    please let me know if you have any question about the server.\ 

    my mail address is: cary.wu@example.com " >> $LOGFILE 

 

send_mail()  #發送郵件函數

    SUBJECT=" Your Linux Account" 

    FROM="cary.wu@example.com" 

    echo "Do U wanna send mail? [y/n]:" 

    read ANSWER 

    if [ $ANSWER == "y" ] 

    then 

    mail -s "$SUBJECT" -r $FROM $USERNAME\@example.com < $LOGFILE 

    rm $LOGFILE 

    else 

    rm $LOGFILE 

    fi 

 

 

create_account_input && create_account && create_samba_account && create_log_mail && send_mail 

相關文章
相關標籤/搜索