Auto Mounting Network Drives


macosnasmounting

mounter.sh

RED="\033[1;31m"
GREEN="\033[1;32m"
NOCOLOR="\033[0m"

connections=(
    "NAME_OF_DRIVE|USERNAME|NAME_OF_NETWORK_DEVICE._smb._tcp.local./LOCAL_DRIVE_NAME"
    "Backup|john|DataCentral._smb._tcp.local./Backup"
)

currentusername=$(stat -f%Su /dev/console)

for item in "${connections[@]}"
do
    item_name=$(echo "${item}"|awk -F "|" '{print $1}')
    item_user=$(echo "${item}"|awk -F "|" '{print $2}')
    item_conn=$(echo "${item}"|awk -F "|" '{print $3}')
    item_pass=$(security find-internet-password -D "Network password" -l "SMB-${item_name}" -w)

    if [ -d "/Volumes/${item_name}" ]; then
        echo "${RED}Mounting point \"${item_name}\" already exists, skipping ${NOCOLOR}"
        continue;
    fi


    if [ -z "${item_pass}" ]; then
        echo ""
        echo "${RED}Keychain Lookup failed${NOCOLOR}"
        echo "Please provide Password for:"
        echo "  User : ${GREEN}${item_user}${NOCOLOR}"
        echo "  Name : ${GREEN}SMB-${item_name}${NOCOLOR}"
        echo "  Conn : ${GREEN}SMB-${item_conn}${NOCOLOR}"
        security add-internet-password -a $currentusername -D "Network password" -l "SMB-${item_name}" -s "smb://${item_conn}" -w
    fi

    echo "Mounting ${item_name}"
    mkdir -p /Volumes/${item_name}
    mount -t smbfs //${item_user}:$(security find-internet-password -D "Network password" -l "SMB-${item_name}" -w)@${item_conn} /Volumes/${item_name}

done

mounter.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/Users/contmp/Library/Mobile Documents/com~apple~CloudDocs/macOS/Zsh/mounter.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

Meta-level


Article language
German
Article date
July 22, 2021
Updated at
July 22, 2021