Saturday, May 29, 2010

Auto shutdown your PC after completing heavy Downloads !!

This is a small Tutorial which helps us in making a script and running it again and again to Shut down PC after all my downloads complete  !! I am using it on Ubuntu but it should work on other Linux distros too!

#power_off Shell Script

no_cons=`netstat -nt | egrep ESTABLISHED | wc -l`



echo "$no_cons Connections" #Display no. of active Connections 
if [ $no_cons -eq 0 ]
then
echo "Your sys Idle now shutting it down"
sudo shutdown -P 5 # will shutdown PC in 5 minutes if 0 connection
else
echo "Still Downloading...." #displays message if download is on !!
fi


save this script it in your home directory and make it executable by writing :

On Terminal:

chmod +x power_off #power_off is the name of the script here !! 

now we have to make a cronjob so that we can run again and again at specified time intervals(like every 5 minutes or so) !!  

For this we will use cron utility which helps in scheduling jobs. For more on cron have a look at http://kevin.vanzonneveld.net/techblog/article/schedule_tasks_on_linux_using_crontab/

 To make a cron job do the following:

On  terminal:

crontab -e #edit the crontab file 

this will open up an editor (as given in EDITOR environment variable in ~/.bashrc)

now in this file in a new line write 

*/5 * * * *  ~/power_off # This will run our script every 5 minutes 

after you quit your editor if no errors it will show "crontab: installing new crontab" !!

now the only problem we are left to solve is that to run shutdown -P  as a normal user without prompting a  password !! For more on this refer to https://help.ubuntu.com/community/Sudoers#Common Tasks from where the following part is copied:

On Terminal:

sudo visudo

 An editor will open where do the following:


Add some cmnd aliases (under their something like #Cmnd_Alias heading in the file opened) as follows:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/halt, /sbin/reboot


You also need to add a user specification (at the end of the file after the "%admin ALL = (ALL) ALL" line so it takes effect - see above for details):

 ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS


Obviously you need to replace "" with the username of the user who needs to be able to shutdown the pc without a password. You can use a user alias here as normal.


Now we are done with this save it and quit if no errors it will come out !!

Note: Please close any browser window with a site which updates it automatically otherwise you sys will not shutdown (coz a connection is always)!!

Hope this helps someone! till then bye Jai FOSS !!

PS: Thanks to Mr. Arun Khan who gave me imp. pointers for the script above (on ILUGC ML) !!






No comments:

Post a Comment