Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Jul 2008 17:12:40 +0200
From:      Mel <fbsd.questions@rachie.is-a-geek.net>
To:        freebsd-questions@freebsd.org
Cc:        David Allen <the.real.david.allen@gmail.com>
Subject:   Re: Reconfiguring network interfaces
Message-ID:  <200807061712.41120.fbsd.questions@rachie.is-a-geek.net>
In-Reply-To: <2daa8b4e0807060706s4e5f8aedqe2ce00ca33bd1b46@mail.gmail.com>
References:  <2daa8b4e0807060706s4e5f8aedqe2ce00ca33bd1b46@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 06 July 2008 16:06:49 David Allen wrote:

> I need to make several wholesale changes to a few different systems,
> and I'd prefer to do it over SSH without losing connectivity where
> possible.  I know I can use ifconfig, or edit /etc/rc.conf directly
> and reboot, but is there a canonical way to make the changes in
> /etc/rc.conf and "reload" those changes to ensure everything is in a
> known state?  From what I can determine, running netif stop/start
> would work, but would require I do that locally.

So, you want to make changes to a machine and confirm they're correct, but 
when they're not, the old settings should be restored:

0) make sure sshd listens on all ip's ('INADDR_ANY'), not preconfigured set.

# cp -p /etc/rc.conf /etc/rc.conf.BEFORE_CHANGE
# ${EDITOR} /etc/rc.conf
# cp -p /etc/rc.conf /etc/rc.conf.CHANGES

Then this script, say /root/bin/testrc.sh:
=====================================================================
#!/bin/sh

/etc/rc.d/netif stop
sleep 1
/etc/rc.d/netif start
# sleep for 5 minutes, should be ample time to re-establish the ssh
# connection.
sleep 300
# We were not killed, this means the connection is faulty
cp -p /etc/rc.conf.BEFORE_CHANGE /etc/rc.conf
/etc/rc.d/netif stop
sleep 1
/etc/rc.d/netif start
=====================================================================

Then run as:
daemon -p /var/run/testrc.pid /root/bin/testrc.sh

When you can log back in, simply:
kill `cat /var/run/testrc.pid` ; rm /var/run/testrc.pid
And rm /etc/rc.conf.BEFORE_CHANGE if you feel comfy.

If you couldn't log back in, inspect /etc/rc.conf.CHANGES and adjust, rm the 
pid file, rince and repeat.
-- 
Mel

Problem with today's modular software: they start with the modules
    and never get to the software part.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807061712.41120.fbsd.questions>