====== Running a Script or Program on Network Startup ======
This is useful if you don't want lots of programs running until you get a network connection. I use it for gmail notifier, which gives error messages if there's no network. There's only easy mode at the moment, as that's what I'm using.
===== Easy Mode =====
* Open a terminal (Ctrl+Alt+t) and type:sudo kwrite /etc/network/if-up.d/mynetstart
* This file should be blank. Put this into the file:
#!/bin/bash
export DISPLAY=:0.0
MYNETSTART=/home/user/.network-autostart
if [ -x $MYNETSTART ]; then
su -c "$MYNETSTART" user
fi
* Save (Ctrl+s) and Quit (Ctrl+q)
* Make the file executable: sudo chmod 0755 /etc/network/if-up.d/mynetstart
* Make a symlink for the //ppp// interface too: sudo ln -s /etc/network/if-up.d/mynetstart /etc/ppp/ip-up.d/
* Now create the .network-autostart file:kwrite ~/.network-autostart
* This code will run Pidgin, but you can add any program you want:
#!/bin/bash
logger -p user.info "Network Autostart Script starting"
if [ "`/sbin/ifconfig | grep -v lo | grep Link -A1 | grep inet `" ]; then
logger -p user.info "An interface is up."
if [ -z `pgrep pidgin` ]; then
logger -p user.info "Loading Pidgin"
pidgin &
fi
#if [ -z `pgrep ANOTHER_PROGRAM` ]; then
# logger -p user.info "Loading ANOTHER_PROGRAM"
# ANOTHER_PROGRAM &
#fi
fi
* The logger command writes to a logging system (known as syslog) if it's running. To start it - for debugging purposes, enter these commands:
/etc/init.d/sysklogd start
tail -n0 -f /var/log/*/*
* The line showing ifconfig has a double quote (") and then a backtick (the key between F1 and ESC on a British English Keyboard) before the /. There are pipe characters (Ftn+Shift+Z) between each command and then there's a backtick followed by a double quote after the word inet.
* The pipe symbol joins multiple commands together.
* The ifconfig command lists all the interfaces and some settings about each interface.
* The grep command looks for words in a string.
* The "Local" (or lo) adaptor will always show up as having the address 127.0.0.1. The grep command -v stops that line from appearing.
* We're looking only for the lines which specify an interface. The interface lines have the word Link in them, hence the next grep command. The -A1 tells grep to show the line we're looking for and the line after.
* Lastly, the line after the word "Link" shows the string inet followed by the IP address. If we see the word inet, then it means we've got an address.
* The pgrep command returns the process ID for a running program. In combination with the if command, this should to stop the program starting repeatedly if your connection comes and goes.
* For more programs, copy and insert more copies of the part showing ANOTHER_PROGRAM, first removing the # symbol from each of *THOSE* lines
* Save and exit.
* Make this file executable too:chmod 0755 ~/.network-autostart
And you're done!
===== Delaying Network mounts =====
As explained in [[http://forum.eeeuser.com/viewtopic.php?pid=251432#p251432|the forums]] this method can also be used to mount network shares only when the network is connected by adding the mounting commands to the .network-autostart file. However, this creates a mounted folder to which the default user does not have access, so it also requires a line to change permissions.
The code will depend on each user's network configuration, but Niel1952 reports that this code works for him:
#! /bin/bash
logger -p user.info "Network Autostart Script starting"
if [ "`/sbin/ifconfig | grep -v lo | grep Link -A1 | grep inet `" ]; then
logger -p user.info "An interface is up."
if [ -z `pgrep firefox` ]; then
logger -p user.info "Loading Firefox"
/opt/firefox/firefox &
fi
if [ -z `pgrep Videos` ]; then
logger -p user.info "Mounting Videos"
sudo mount -t cifs -o username=Public,password=******,uid=user,gid=users '//192.168.1.5/Movies' /home/user/My\ Documents/My\ Videos/;
sudo chmod 0755 /home/user/My\ Documents/My\ Videos
fi
#if [ -z `pgrep ANOTHER_PROGRAM` ]; then
# logger -p user.info "Loading ANOTHER_PROGRAM"
# ANOTHER_PROGRAM &
#fi
fi
----
Major credit goes to **Jefficus** and **jimbox51**, see [[http://forum.eeeuser.com/viewtopic.php?id=8810|this thread.]] To get gmail notifier, see [[http://forum.eeeuser.com/viewtopic.php?pid=133039|this thread.]]