#!/bin/sh # # Short: Create a sharepoint for every netinfo mount point # Version: 2.03, 13-08-02 # Author: Mark J Swift, msw AT blackpool.ac.uk # Long: This script will create a SharePoints for every mount # specified by netinfo. # # 1. Log in as root # # 2. Copy this script into roots home directory # (/private/var/root/Documents). # # 3. Start a new shell process and change directory to roots home. # # cd ~/Documents # # 4. Set the execute flag on the script, type: # # chmod u+x mkshares.sh # # 5. Execute the "mkmountfldrs.sh" script with the following command: # # ~/Documents/mkshares.sh # # -------------------------------- # Set the host id based on the first broadcast interface's IP address # -------------------------------- node_ip=`ifconfig -a | sed -n '/inet/p' | sed -n '/broadcast/p' | head -1 | cut -d' ' -f2` if test -z "$node_ip" then node_ip="127.0.0.1" fi # get the name of this workstation node_name=`uname -n` # -------------------------------- # debug - print host details to screen # -------------------------------- # echo " node_ip:$node_ip" # echo " node_name:$node_name" # -------------------------------- # NetInfo: are we sharing, are we master? # -------------------------------- ni_notshared=`niutil -rparent . | grep -c -y "[.]*no parent"` if [ $ni_notshared -eq 1 ] then ni_isshared=0 ni_ismaster=0 ni_host_name=$node_name else ni_isshared=1 ni_ismaster=`niutil -rparent . | grep -c -y "^$node_name[]*/[]*"` ni_host_name=`niutil -rparent . | cut -d/ -f1 | cut -d. -f1 ` fi if [ $ni_isshared -eq 0 -o $ni_ismaster -eq 1 ] then ni_canmodify=1 else ni_canmodify=0 fi # -------------------------------- # debug - print host NetInfo details to screen # -------------------------------- # echo " ni_is_shared:$ni_isshared" # echo " ni_is_master:$ni_ismaster" # echo " ni_canmodify:$ni_canmodify" # echo " ni_host_name:$ni_host_name" # is the machine defined in NetInfo? count=`nireport / /machines name | grep -c -y "^$ni_host_name\b"` if [ $count -eq 0 ] then ni_host_ip=$node_ip else ni_host_ip=`niutil -read / /machines/$ni_host_name | grep -y "^ip_address: " | cut -d: -f2 | tr -d "\040"` fi # is IP valid? count=`echo "$ni_host_ip" | grep -c -y "^127.0.0.1\b"` if [ $count -ne 0 ] then ni_host_ip=$node_ip fi # -------------------------------- # debug - print host NetInfo details to screen # -------------------------------- # echo " ni_host_ip:$ni_host_ip" # -------------------------------- # get NETINFO group id for "admin" group # -------------------------------- ni_admin_group_name="admin" ni_admin_group_gid=`niutil -read . /groups/$ni_admin_group_name | grep -y "^gid: " | cut -d: -f2 | tr -d "\040"` # -------------------------------- # debug - print admin group details to screen # -------------------------------- # echo " ni_admin_group_name:$ni_admin_group_name" # echo " ni_admin_group_gid:$ni_admin_group_gid" # -------------------------------- # get NETINFO user id for "admin" user # -------------------------------- ni_admin_user_name=`niutil -read . /groups/$ni_admin_group_name | grep -y "^users: " | cut -d" " -f3` if test -z $ni_admin_user_name then ni_admin_user_name="root" fi ni_admin_user_uid=`niutil -read . /users/$ni_admin_user_name | grep -y "^uid: " | cut -d: -f2 | tr -d "\040"` # -------------------------------- # debug - print admin user details to screen # -------------------------------- # echo " ni_admin_user_name:$ni_admin_user_name" # echo " ni_admin_user_uid:$ni_admin_user_uid" # -------------------------------- # find a group id that is free # -------------------------------- gidcount=`nireport / /groups gid | sort -n | tail -n 1` gidcount=`echo $gidcount + 1 | bc` if [ $gidcount -lt 1025 ] then gidcount=1025 fi for ni_dirid in `niutil -list / /mounts | cut -d ' ' -f1` do ni_mount_name=`niutil -read / $ni_dirid | grep -y "^name: " | cut -d" " -f2-` ni_mount_host_name=`niutil -read / $ni_dirid | grep -y "^name: " | cut -d: -f2 | cut -c2-` ni_mount_host_ip=`niutil -read / $ni_dirid | grep -y "^opts: " | cut -d@ -f2 | cut -d/ -f1` ni_mount_share_fldr=`niutil -read / $ni_dirid | grep -y "^opts: " | cut -d@ -f2 | cut -d/ -f2-` ni_mount_share_pnt=`niutil -read / $ni_dirid | grep -y "^dir: " | cut -d: -f2 | cut -c2-` ni_mount_share_path=`niutil -read / $ni_dirid | grep -y "^name: " | cut -d: -f3` # -------------------------------- # debug - print user home details to screen # -------------------------------- # echo " ni_mount_host_name: $ni_mount_host_name" # echo " ni_mount_host_ip: $ni_mount_host_ip" # echo " ni_mount_share_fldr: $ni_mount_share_fldr" # echo " ni_mount_share_pnt: $ni_mount_share_pnt" # echo " ni_mount_share_path: $ni_mount_share_path" count=`echo "$ni_mount_host_name" | grep -c -y "^$node_name\b"` if [ $count -ne 0 ] then # -------------------------------- # create SharePoints NETINFO details # -------------------------------- # does the sharepoint already exist count=`nireport . /config/SharePoints name | grep -c -y "^$ni_mount_share_fldr\b"` if [ $count -eq 0 ] then # mount point doesn't yet exist echo " : Creating SharePoint $ni_mount_share_fldr" # create share point while [ `niutil 2>&1 -create . /config/SharePoints/"$ni_mount_share_fldr" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done else # Everything is fine, mount already exists echo " : Updating SharePoint $ni_mount_share_fldr" fi # create/overwrite "afp_name" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" afp_name "$ni_mount_share_fldr" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_name" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_name "$ni_mount_share_fldr" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "ftp_name" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" ftp_name "$ni_mount_share_fldr" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "directory_path" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" directory_path "$ni_mount_share_path" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "afp_shared" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" afp_shared 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_shared" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_shared 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "ftp_shared" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" ftp_shared 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "afp_guestaccess" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" afp_guestaccess 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_guestaccess" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_guestaccess 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "ftp_guestaccess" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" ftp_guestaccess 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_createmask" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_createmask 0644 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_directorymask" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_directorymask 0755 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "smb_inherit_permissions" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" smb_inherit_permissions no | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "amt_rec_name" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_rec_name "$ni_mount_name" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "amt_ds_path" property if [ $ni_isshared -eq 0 ] then while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_ds_path "NetInfo/DefaultLocalNode" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done else while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_ds_path NetInfo/root | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done fi # create/overwrite "amt_file_system" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_file_system 0 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "amt_is_automounted" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_is_automounted 1 | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "amt_is_staticMount" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_is_staticMount 0| grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done # create/overwrite "amt_static_mount_path" property while [ `niutil 2>&1 -createprop . /config/SharePoints/"$ni_mount_share_fldr" amt_static_mount_path "" | grep -y -c " *Permission denied"` -ne 0 ]; do sleep 2 ; done fi done