Skip to content

Instantly share code, notes, and snippets.

@dgraziotin
Last active September 22, 2022 23:33
Show Gist options
  • Save dgraziotin/4487187 to your computer and use it in GitHub Desktop.
Save dgraziotin/4487187 to your computer and use it in GitHub Desktop.
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
@panoriega
Copy link

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
Copy link

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

@brolal
Copy link

brolal commented Dec 11, 2021

@dgraziotin
Copy link
Author

@brolal I hope that someone can help you here. My TimeCapsule has long been dead.

@jcbecker2020
Copy link

not working on ubuntu 22.04 or parrot linux, I simple need to emulate windows just for my time capsule. Please help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment