On Mon, 2011-08-08 at 21:27 +0200, Bob Proulx wrote: > Tomas Kral wrote: > > What is the recommended and easy way to restart network subsystem on a > > desktop without need of rebooting the computer? > > This has been a popular topic this week! > > > On Lenny I used to, as admin, execute something like this, > > > > #!/bin/sh > > # restart network > > su -c'\ > > modprobe -r cdc_ether;\ > > modprobe cdc_ether;\ > > cd /etc/init.d;\ > > ./networking stop;\ > > ./networking start;\ > > ./arno-iptables-firewall restart;\ > > cd -\ > > ' > > > > On Squeeze, it sometimes complains that eth1 device does not exist yet. > > My idea is to automate the task, and set a watchdog over ISP connection, > > and call a safe script when it drops to bring it up again. > > You didn't show us how your /etc/network/interfaces is set up. It > would be useful to know if you are using 'auto eth0' / 'auto eth1' > which I assume you are otherwise the networking stop and start would > not work, but it is still an assumption I have to make. And without > that information it makes it hard to guess at your problem with eth1 > not existing yet. Please show us. > > On Squeeze you should use the 'service' utility to operate on services > instead of calling them directly. This is new in Squeeze and > addresses the problem of environment polution. This doesn't in any > way change the way '/etc/init.d/service restart' works now but is an > improvement over it. Since it is now available I recommend using it. > > I would reorder the actions to remove the modules after having brought > down the interface. I expect that is the problem. Probably unloading > the module brings down the interface and there is a race between which > happens first. At a guess. > > You have backslashes at the end of every line. But you have also > created a quoted string with semicolons. In this case you don't need > to have quoted newline continuations. I think it reads better without > it. > > You cd into /etc/init.d and then at the end of the script 'cd -' to > return and then exit. The current working directory is a property of > the process and since the process is exiting immediately it is no > necessary to try to return before exiting. So that 'cd -' can be > removed. > > I would read this reference: > > http://www.debian.org/doc/manuals/debian-reference/ch05.en.html > > And in particular this section is very useful: > > > http://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_basic_syntax_of_etc_network_interfaces > > And then add 'allow-hotplug eth0' so that the interfaces are event > driven too. Then use ifup and ifdown instead. > > #!/bin/sh > # restart network > su -c ' > service networking stop; > modprobe -r cdc_ether; > sleep 1; > modprobe cdc_ether; > service networking start; > service arno-iptables-firewall restart; > ' > > I added a sleep 1 there because I have a system with an Intel chipset > and it has a vaguely similar problem. I sometimes have to unload and > reload that module too. I found that it was much more reliable if I > gave the system a few cycles between unloading and loading. YMMV. > > I would be inclined to set up sudo and /etc/sudoers so that this uses > sudo instead of su. I find it a more convenient solution. It would > turn this into a normal script instead of a script in the argument > list and then just sudo that script. Again YMMV. > > If you decide to try the ifup/ifdown route it would look like this. > As an advantage it would not cycle the eth0 network but just eth1. > > #!/bin/sh > # Call script with sudo. > ifdown eth1 > modprobe -r cdc_ether > sleep 1 > modprobe cdc_ether > ifup eth1 > service arno-iptables-firewall restart > > As further improvement possibilities, if you look in /etc/network/ you > will find a series of .d directories such as /etc/network/if-up.d/ and > in there scripts. You could have the firewall script automatically > restart whenever the network comes online. > > File something like /etc/network/if-up.d/local-firewall-restart: > #!/bin/sh > # Restart firewall whenever the interface comes online. > case $IFACE in > eth*) service arno-iptables-firewall restart ;; > esac > exit 0 > > And then remove that from the other script because it will always happen. > Make sure to 'chmod a+x /etc/network/if-up.d/local-firewall-restart' > to make the script executable. > > #!/bin/sh > # Call script with sudo. > ifdown eth1 > modprobe -r cdc_ether > sleep 1 > modprobe cdc_ether > ifup eth1 > > I don't know if any of the above is a critical item. But that is the > type of thinking I have about it. Hope that helps. > > Bob
Yes, I use auto eth0 eth1 I am glad for your improving my scripts, I like it. I will use one or the other you suggested here. Many thanks. -- Tomas Kral <thomas.k...@email.cz> -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1312910689.2711.4.camel@lynx.localhost.localdomain