≡ Menu

Simple Shell Script To Wake Up NAS Devices Using Linux or Unix Computer

A simple bash shell script to wake up nas devices / home servers using mac address.

#!/bin/bash
# A simple shell to Wake Up nas devices / home servers
# Tested on RHEL, Debian and Ubuntu base desktop systems.
# ----------------------------------------------------------------------------
# Written by Vivek Gite 
# (c) 2012 nixCraft under GNU GPL v2.0+
# ----------------------------------------------------------------------------
# Last updated: 14/May/2012
# ----------------------------------------------------------------------------
# add your nas devices mac address here #
_nas03="00:xx:yy:zz:aa:aa"
_nas02="xx:yy:zz:aa:bb"
_nas01="00:xx:yy:zz:aa:cc"
# path to wakeonlan #
__wakeupserver="/usr/bin/wakeonlan"
# who am I ? #
_me="${0##*/}"
# send magic packet #
__wakeup(){
   local n="$1"
   [[ "$n" == "" ]] &&  { echo "$_me ($FUNCNAME#$LINENO) error: Mac address not set."; exit 1; } || $__wakeupserver $n
}
## main logic ##
case $_me in
   wakeup.nas03) __wakeup $_nas03;;
   wakeup.nas02) __wakeup $_nas02;;
   wakeup.nas01) __wakeup $_nas01;;
	*) echo "$_me I can not understnad the request."
esac

How do I use this script?

First, install Wake-on-LAN (WOL) client under Unix or Linux operating systems.

Next, download this script and put in your home directory as master.wol.sh
wget -O 558.sh.zip 'http://bash.cyberciti.biz/dl/558.sh.zip?id=82aa046ab4872920e2fb0c9add0bd169'
unzip 558.sh.zip
mv 558.sh ~/bin/master.wol.sh
chmod +x ~/bin/master.wol.sh

Edit the script and set nas server mac address. Finally, create a symbolic link using ln command:
ln -s master.wol.sh wakeup.nas01
ln -s master.wol.sh wakeup.nas02
ln -s master.wol.sh wakeup.nas03

To wake up nas01 using WOL, enter:
/path/to/wakeup.nas01

{ 2 comments… add one }
  • Bill May 5, 2016, 5:31 pm

    The Buffalo nas will start in this way above! Thats good.

    But then after 3 min it will go down again because of Buffalo NAS systems have an “Auto Power” mode: the NAS stays up&running while the (windows) pc is running. It’s done with a (windows) service, always running, that send 3 (why 3?) wake-on-lan packets to the NAS every (about) 30 seconds. When you shutdown the pc, the NAS stops receiving w-o-l packets, wait about 3 minutes, then shutdown itself.

    I found a solution for that here:

    http://ubuntuforums.org/showthread.php?t=1410353

  • Robert March 12, 2014, 7:31 am

    _nas02=”00:xx:yy:zz:aa:bb”

    It would be nicer to do an indirect call to the variable that is the name with which you call the program to avoid the case clause, but I don’t know how that is done in bash. I mean to recall the value of the variable whose name is the value of a variable.

Security: Are you a robot or human?

Leave a Comment