Skip to content

Instantly share code, notes, and snippets.

@hapylestat
Last active August 29, 2015 14:05
Show Gist options
  • Select an option

  • Save hapylestat/49074d8ea0fed44c2fd0 to your computer and use it in GitHub Desktop.

Select an option

Save hapylestat/49074d8ea0fed44c2fd0 to your computer and use it in GitHub Desktop.
Mount smb shares with rw access for simple user using cifs (not gmount). Should be executed under root.
#!/bin/bash
#######################################################################
# Shell script #
# Author: H.L. #
# TPL Version: 0.1 #
# Script for https://github.com/hapylestat/bashtools/tree/master/lib #
#######################################################################
#========================Global variables
APPVER="0.1b"
#=======================Include base library
. /etc/system.conf
. $libROOT/functions
MOUNT_POINT=/mnt
SERVER=<smb server>
USERNAME=<smb username>
PASSWORD=$USERNAME
MOUNTUNDER=<username>
USERID=$(cat /etc/passwd|grep $MOUNTUNDER|cut -d ':' -f 3)
include terminal, system, lib.system.args, filesystem
server_info(){
write_item "Mount under" "$MOUNTUNDER($USERID)"
write_item "Remote server" "$SERVER"
}
list_shares_cmd(){
echo $(smbclient -L $SERVER --user=$USERNAME "\\\\$SERVER\\" $PASSWORD 2>/dev/null|grep -e "Disk"|cut -f 2|cut -d " " -f 1)
}
mount_shares(){
server_info
SHARES=$(list_shares_cmd)
if [ ! -d "$MOUNT_POINT/$SERVER" ]; then
mkdir "$MOUNT_POINT/$SERVER"
fi
for share in $SHARES; do
if [ ! -d "$MOUNT_POINT/$SERVER/$share" ]; then
mkdir "$MOUNT_POINT/$SERVER/$share"
fi
run "mount -t cifs //$SERVER/$share $MOUNT_POINT/$SERVER/$share -o username=$USERNAME,password=$PASSWORD,rw,uid=$USERID" "Mount $share..."
done
}
unmount_shares(){
for d in $(dirlist "$MOUNT_POINT/$SERVER"); do
run "umount $MOUNT_POINT/$SERVER/$d" "Unmount $d"
done
run "find $MOUNT_POINT/$SERVER -empty -type d -delete" "Cleanup mountpoints"
}
list_shares(){
server_info
DATA=$(list_shares_cmd)
i=0
write_header "shares"
for item in $DATA; do
write_item "$i" "$item"
i=$(( i + 1 ))
done
}
show_help(){
echo "$FILENAME [list|mount|unmount]"
}
case "${ARGS["default"]}" in
list)
list_shares
;;
mount)
mount_shares
;;
unmount)
unmount_shares
;;
*)
show_help
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment