I know that there are many ways to auto-shutdown, but I'm concerned about auto turn-on. Is there a command or a small piece of software to turn on the system at given time?
One alternative is to not shutdown, but to hibernate or suspend the system and then automatically wake it up using
rtcwake -s 3600 -m disk
will immediately hibernate (suspend to disk) the system and resume it in 1 hour. Similarly
sleep 600; rtcwake -s 60 -m mem
will suspend to ram in 10 minutes from now, and then resume after 60 seconds.
You can also wake up the system at given time with
-t option. It takes seconds since 1970 as an argument, but you can use
date to convert from human readable format, e.g.
rtcwake -m disk -t "$(date -d '2015-02-26 16:12:00' '+%s')"
Check out the Wake-on-LAN (WoL) feature. Arch Linux has nice documentation on using it, and do not worry; it is Linux general. In Ubuntu you have the
wakeonlan package to send magic packets to your machine. Here is Ubuntu documentation on using WoL.
So to turn your machine automatically, you will have to use another machine that will turn it on with WoL.
It depends on whether the BIOS/UEFI of your computer supports this feature.
If it does, you can use the Ubuntu package
nvram-wakeup to set the wakeup date/time.
Read the documentation of the package before using it (
/usr/share/doc/nvram-wakeup/README.mb.gz) as it is possible that you need to do some work to configure the tool.