Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Script to automatically look for Apple TimeCapsule devices and mount/umount them under GNU/Linux. See http://task3.cc/418/how-to-automatically-mount-and-umount-apple-time-capsule-on-linu for info and explanations.
#!/bin/bash
#
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.
#
# Version 3, enhanced for Ubuntu 13.X+, Fedora 19+, and similar distros.
# Runs on all GNU/Linux distros (install cifs-utils)
# Author: Daniel Graziotin <dgraziotin AT task3 DOT cc> - http://task3.cc
# Purpose: Check if there is a TimeCapsule in your network and mount it
# for use it under Gnu/Linux. Unmount it if it is already mounted.
# The mount point is created and destroyed after use (for prevent
# automatic backup software to backup in the directory if the device
# is not mounted)
# Instructions:
# 1) Install cifs-utils (sudo apt-get install cifs-utils)
# 1) Change the first four variables according to your configuration.
# 2) Run this program at boot when your network is already
# set up. Also, run it on logoff to umount Time Capsule.
TIMECAPSULE_IP="" # e.g. "192.168.1.100"
TIMECAPSULE_VOLUME="/Time\ Capsule" # also try "/Data"
TIMECAPSULE_PASSWORD="YOURPASSWORDHERE" # prefix special characters, e.g. \!
MOUNT_POINT=/mnt/timecapsule # no need to create the directory
IS_MOUNTED=`mount 2> /dev/null | grep "$MOUNT_POINT" | cut -d' ' -f3`
TIMECAPSULE_PATH="//$TIMECAPSULE_IP$TIMECAPSULE_VOLUME"
if [[ "$IS_MOUNTED" ]] ;then
umount $MOUNT_POINT
rmdir $MOUNT_POINT
else
CHECK_TIMECAPSULE=`smbclient --no-pass -L $TIMECAPSULE_IP 2>&1 > /dev/null | grep -m1 -i apple`
if [[ "$CHECK_TIMECAPSULE" =~ "Apple" ]] ;then
mkdir $MOUNT_POINT
echo "mount.cifs $TIMECAPSULE_PATH $MOUNT_POINT -o pass=$TIMECAPSULE_PASSWORD,file_mode=0777,dir_mode=0777,sec=ntlm" | /bin/bash
fi
fi
@rajibahmed

This comment has been minimized.

Copy link

@rajibahmed rajibahmed commented Dec 3, 2017

There was an issue with ubuntu 17.10 unable to mount due to version mismatch of samba protocol version.
Adding vers=1.0 solves it.

echo "mount.cifs $TIMECAPSULE_PATH $MOUNT_POINT -o pass=$TIMECAPSULE_PASSWORD,file_mode=0777,dir_mode=0777,sec=ntlm,vers=1.0" 
@Arc676

This comment has been minimized.

Copy link

@Arc676 Arc676 commented Sep 29, 2018

This doesn't work on Ubuntu 18.04. Yields:

Unable to find suitable address.

dmesg | tail yields

CIFS VFS: Error connecting to socket. Aborting operation.
CIFS VFS: cifs_mount failed w/return code = -111
@l3x

This comment has been minimized.

Copy link

@l3x l3x commented Oct 12, 2018

This worked for me on Linux 4.14.74-1-MANJARO:

mkdir -p /mnt/timecapsule 
mount.cifs //$TIMECAPSULE_IP/Data /mnt/timecapsule -o user=$USER,pass=$PASSWORD,file_mode=0777,dir_mode=0777,sec=ntlm,vers=1.0
@panoriega

This comment has been minimized.

Copy link

@panoriega panoriega commented Jul 31, 2020

I made a simple change on the script, I removed the smbclient check, because the security is different in TimeCapsule now, and also added parameters to mount command, with sudo. I also created a daemon script to run it on startup.

UID=1000 #User ID

if [[ "$IS_MOUNTED" ]] ;then
    echo "unmounting TimeCapsule"
    sudo umount $MOUNT_POINT
    sudo rmdir $MOUNT_POINT
    echo "unmounted"
else
    echo "mounting TimeCapsule"
    sudo mkdir $MOUNT_POINT
    echo "sudo mount.cifs $TIMECAPSULE_PATH $MOUNT_POINT -o password=$TIMECAPSULE_PASSWORD,file_mode=0777,dir_mode=0777,sec=ntlm,uid=$UID,vers=1.0" | /bin/bash
    echo "mounted"
fi
@ipatch

This comment has been minimized.

Copy link

@ipatch ipatch commented Jul 31, 2020

@panoriega

any reason you chose to use mount.cifs over mount -t smbfs ?

I remember´ reading somewhere that calling one of these commands directly from a CLI is suppose to be a no no 👎

i run macOS nevermind

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.