On Mon, Jul 09, 2018 at 11:01:22AM +0100, Darac Marjal wrote: > On Mon, Jul 09, 2018 at 11:52:36AM +1000, Zenaan Harkness wrote: > > So I change between two internet connections from time to time. > > > > I use /etc/network/interfaces ("/e/n/i") > > > > When I modify /e/n/i , I then run a little "reset" script, like so: > > > > dev=eth0 > > ifdown $dev > > ifconfig $dev down > > ifup $dev > > > > Here and there I've had problems. > > > > Recently I discovered the ip command. > > > > Apparently, after reconfiguring as above, two IP addresses end up > > attached to eth0 - one for each (staticly configured in /e/n/i) > > ISP network connection. > > > > So now I am manually running something like: > > > > ifconfig eth0 down > > ip address del 10.1.1.30/24 dev eth0 > > ip address del 192.168.1.30/24 dev eth0 > > ip address del fe80::f2de:f1ff:fef7:ea96/64 dev eth0 > > ifup eth0 > > > > But this (atm) is a very manual process, and it seems to me that I am > > not taking down eth0 properly, and that I should not have to > > introduce IP address awareness into my eth reset script, just to > > properly reset my eth0 static configuration. > > > > Any pointers of what I need to read/ what I am missing, would be > > really appreciated. > > > > ifup and ifdown read the contents of /e/n/i to determine what tasks to > perform. So, in particular, ifdown reads that > file to determine what addresses to remove from the interface. > > That being said, you might find it more suitable to change your script to: > 1. ifdown the interface > 2. Change the network parameters (either by using sed etc to edit the > file or to move 'canned' files in/out of > /etc/network/interfaces.d) > 3. ifup the interface > > What I would do, in your situation is to have a set of files in > /etc/network/interfaces.d called, for example "!home", > "!work", "!travel" or whatever makes sense for your locations. The leading > "!" character makes the configuration > invalid to ifupdown, so will be ignored. Your script can then rename any > files that DON'T have a "!" in front to do > so, then rename the requested file to NOT have a "!" in front e.g. > > #!/bin/bash > ifdown eth0 > prename 's/^/!' /etc/network/interfaces.d/[^\!]* > mv /etc/network/interfaces.d/\!$1 /etc/network/interfaces.d/$1 > ifup eth0
Perfect! Thanks. Also perhaps interface map[ping] could work... I used that once years ago... need to re-read man interfaces again.