## ---- Please Cut Here ---- ## #/bin/ksh ###################################################################### ## Shell Script to Start / Stop / Restart Samba ## ## Written by ChinYau - leecy@sg.ibm.com ###################################################################### case "$1" in start) echo " " echo " Starting Samba " echo " " echo "Starting Samba Processes" /opt/freeware/bin/smbd & /opt/freeware/bin/nmbd & echo " " echo "Samba Successfully started at the following PIDs" echo " " echo `ps -e | grep smbd ` echo `ps -e | grep nmbd ` echo " " echo "* If you did not see any PIDs, the samba is not started" ps -e | grep smbd | awk {'print $1'} > /tmp/smb.pid ps -e | grep nmbd | awk {'print $1'} > /tmp/nmb.pid echo " " ;; stop) echo " " echo " Stopping Samba " echo " " echo "Killing Samba Process" #kill -9 `cat /tmp/smb.pid` kill -9 `ps -e | grep smbd | cut -d " " -f 1-7` #ps -ef | grep smb | awk '{print $2}' | xargs -t -i kill -9 {} echo "Killing Netbios Process" #kill -9 `cat /tmp/nmb.pid` kill -9 `ps -e | grep nmbd | cut -d " " -f 1-7` #ps -ef | grep smb | awk '{print $2}' | xargs -t -i kill -9 {} echo " " echo " Waiting for Killed process to close gracefully ...." echo " " sleep 5 ;; restart) $0 stop sleep 1 $0 start ;; status) echo " " echo " Status Of Samba " echo " " echo " " echo `ps -e | grep smbd ` echo `ps -e | grep nmbd ` smbstatus echo " " echo "* If you did not see any PIDs, the samba is not started" echo " " ;; user) echo " " echo " User Management " echo " " echo " " echo "[ 1 ] Add a User" echo "[ 2 ] List Samba Users" echo "[ 3 ] Change Passwd" echo "[ 4 ] Exit" echo " " echo "Enter your choice :" read choice case "$choice" in 1) echo " " echo " Add User " echo " " echo "Enter Login Name:" read loginname #result=`lsuser -a ALL | grep $loginname` result=`cat /etc/passwd | cut -d: -f1 | grep $loginname` echo " " if [ "$result" = "$loginname" ] #if [ $loginname = $result ] then smbpasswd -a $loginname cp /etc/smb.conf /tmp/smb.orig echo " " >> /etc/smb.conf echo "[$loginname]" >> /etc/smb.conf echo "comment = $loginname folder" >> /etc/smb.conf echo "path = /home/$loginname" >> /etc/smb.conf echo "valid users = $loginname" >> /etc/smb.conf echo "public = no" >> /etc/smb.conf echo "writable = yes" >> /etc/smb.conf echo "printable = no" >> /etc/smb.conf echo "create mask = 0700" >> /etc/smb.conf echo " " >> /etc/smb.conf else echo " $loginname is not a Valid Login Account " echo " " echo "Do you want to add to the system ? [Y/N]" read loginaccount case "$loginaccount" in y|Y) adduser $loginname smbpasswd -a $loginname cp /etc/smb.conf /tmp/smb.orig echo " " >> /etc/smb.conf echo "[$loginname]" >> /etc/smb.conf echo "comment = $loginname folder" >> /etc/smb.conf echo "path = /home/$loginname" >> /etc/smb.conf echo "valid users = $loginname" >> /etc/smb.conf echo "public = no" >> /etc/smb.conf echo "writable = yes" >> /etc/smb.conf echo "printable = no" >> /etc/smb.conf echo "create mask = 0700" >> /etc/smb.conf echo " " >> /etc/smb.conf break ;; n|N) echo "User not added" echo " " break ;; *) echo "Invalid Choice" echo " " break ;; esac fi ;; 2) echo " " echo " List Samba Users " echo " " cat /etc/smbpasswd | cut -d: -f1 echo " " ;; 3) echo " " echo " Change Passwd " echo " " echo "Enter Login Name:" read loginname result=`cat /etc/smbpasswd | cut -d: -f1 | grep $loginname` if [ "$result" = "$loginname" ] then echo "Enter New Passwd Below" smbpasswd $loginname else echo "Login Name Not Found !" echo " " break fi ;; 4) echo "Exit" break ;; *) echo "Invalid Choice" exit 2 esac ;; *) echo " " echo "Samba 2.1.0 - Start / Stop / User Management Script" echo " " echo "Usage : /sbin/samba (start|stop|status|restart|user)" echo " " echo "start - start samba & netbios" echo "stop - stop samba & netbios" echo "status - show status of samba & netbios" echo "restart - restart samba & netbios" echo "user - user management menu" echo " " exit 1 esac exit 0 ## ---- Please Cut Here ---- ##