shell script 一鍵搭建samba腳本

更多腳本請看這裡:https://github.com/king567/WIJ-shell-script-library
安裝環境ubuntu 16.0.4或以上版本

主要功能
1. 一鍵搭建安裝
2. 設定搭建目錄
3. 加入使用者及密碼
4. 解除安裝功能
5. 設定網路芳鄰探索時顯示的網路名稱

腳本內容


#!/bin/bash
COLOR_REST='\e[0m'
COLOR_GREEN='\e[0;32m';
COLOR_RED='\e[0;31m';
COLOR_YELLOW='\033[1;93m'

mkdir=$(mkdir -p 2> /dev/null)
Bk_conf=$(cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 2> /dev/null)
Samba_Conf_Path=$(/etc/samba/smb 2> /dev/null)
Samba_Conf_File="/etc/samba/smb.conf"

Ask_answer (){
read -p "Please input share folder directory : " share_folder
read -p "Please input samba explore name : " BIOS_NAME
read -p "Please input user name : " User_Name
read -p "Please input samba log max size : " Log_Max_Size
read -p "Please input samba net folder name : " NET_NAME
share_folder=${share_folder:="/samba/anonymous"}
BIOS_NAME=${BIOS_NAME:="WIJTB"}
User_Name=${User_Name:="king"}
Log_Max_Size=${Log_Max_Size:="1000"}
NET_NAME=${NET_NAME:="king"}
}

Conf_file (){
conf="[global]
dos charset = cp950
netbios name = ${BIOS_NAME}
server string = %h server (Samba, Ubuntu)
server role = standalone server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
log file = /var/log/samba/log.%m
max log size = ${Log_Max_Size}
max protocol = SMB3
protocol = SMB3
server min protocol = SMB2
min protocol = SMB2
load printers = No
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[${NET_NAME}]
comment = need share
path = ${share_folder}
valid users = ${User_Name}
force user = ${User_Name}
force group = ${User_Name}
group = ${User_Name}
read only = No
create mask = 0777
directory mask = 0777
directory mode = 0777
guest ok = Yes"
}
Check_install (){
if [ -f "/usr/sbin/smbd" ]; then
  test=0
else
  test=1
fi
}

Install_samba (){
Conf_file
Check_install
    if [ $test -eq 1 ]; then
    echo "installing samba"
    apt-get install -y samba samba-common python-glade2 system-config-samba
    elif [ $test -eq 0 ]; then
    echo "samba service had been exists"
    echo "(1).Reinstall samba"
    echo "(2).Exit"
    read -p "Please Input Number (1-2):" choice
        case ${choice} in
        1)    
            apt-get remove --purge -y samba samba-common python-glade2 system-config-samba 
            wait
            apt-get install -y samba samba-common python-glade2 system-config-samba
            wait
        ;;
        2)
            break
        ;;
        *)
        echo -e "\n${COLOR_RED}Error Input Please Try Again${COLOR_REST}\n"
        ;;
        esac
    fi
wait
echo -e "\n${COLOR_GREEN}Install Success !!!!${COLOR_REST}\n"

echo "${conf}" > "${Samba_Conf_File}"
if [ -d "${share_folder}" ]; then
    echo "Directory ${share_folder} exists."
else
    echo "Directory ${share_folder} does not exists."
    echo "createing folder...."
    mkdir -p $share_folder
fi
chmod -R 0770 $share_folder
chown -R king:king $share_folder

echo "adding Samba User"
Check_User_Exist=$(cat /etc/passwd | grep -o $User_Name | head -n 1)
if [ "$Check_User_Exist" ==  $User_Name ]; then
smbpasswd -a $User_Name
else
adduser $User_Name && passwd $User_Name && smbpasswd -a $User_Name
fi

echo "setting firewall"

firwalld=$(command -v firewalld 2>/dev/null)
ufw=$(command -v ufw 2>/dev/null)
if [ $firewalld > /dev/null 2>&1 ]; then 
  echo 'Use firewalld' 
    firewall-cmd --zone=public --add-service samba
    firewall-cmd --zone=public --permanent --add-service samba 
elif [ $ufw > /dev/null 2>&1 ]; then 
  echo 'Use ufw' 
    ufw allow Samba
else
  echo -e "\n${COLOR_RED}We do not know what firewall you use !!!${COLOR_REST}\n"
fi
echo "starting samba service"
    systemctl restart smbd.service
wait
echo -e "\n${COLOR_GREEN}Starting Samba Service Success !!!${COLOR_REST}\n"

##IPV4 Check
ListIPcmd="/sbin/ifconfig"
IP=$($ListIPcmd | grep 'inet addr:' | grep -v '127.0.0.1' | awk '{print $2}' | awk -F:  '{print $2}')
echo -e "\nthis is windows samba information\n"
echo -e "\n${COLOR_GREEN}"'  \\''\\'"${IP}\\${NET_NAME}${COLOR_REST}\n"

}

Unstall_Samba (){
apt-get remove --purge samba samba-common python-glade2 system-config-samba
}
echo "(1).Install samba"
echo "(2).Unstall samba"
echo "(3).Exit"
read -p "Please Input Number (1-3):" choice
    case ${choice} in
    1)    
        Ask_answer
        Install_samba
    ;;
    2)
        Unstall_Samba
    ;;
    3)    break
    ;;
    *)
    echo -e "\n${COLOR_RED}Error Input Please Try Again${COLOR_REST}\n"
    ;;
    esac
Last modification:June 1st, 2018 at 02:10 pm