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 <http://www.cyberciti.biz/>
# (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

Get the latest tutorials on SysAdmin, Linux/Unix, Open Source, and DevOps topics:
CategoryList of Unix and Linux commands
File Management cat
Firewall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilities dig host ip nmap
OpenVPN CentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Manager apk apt
Processes Management bg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searching grep whereis which
User Information groups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPN CentOS 8 Debian 10 Firewall Ubuntu 20.04
2 comments… add one
  • Bill May 5, 2016 @ 17:31

    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 Mar 12, 2014 @ 7:31

    _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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.