Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Jul 2008 09:45:33 -0700
From:      "David Allen" <the.real.david.allen@gmail.com>
To:        Mel <fbsd.questions@rachie.is-a-geek.net>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Reconfiguring network interfaces
Message-ID:  <2daa8b4e0807070945jb59436bqbd686f256e837965@mail.gmail.com>
In-Reply-To: <200807061712.41120.fbsd.questions@rachie.is-a-geek.net>
References:  <2daa8b4e0807060706s4e5f8aedqe2ce00ca33bd1b46@mail.gmail.com> <200807061712.41120.fbsd.questions@rachie.is-a-geek.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jul 6, 2008 at 8:12 AM, Mel <fbsd.questions@rachie.is-a-geek.net> wrote:
> 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.

LOL.  You've turned what was could have been an awkward scenario and a
cheap and dirty hack into something almost elegant.  Me, I'm just
trying to save some trips but I'm sure there's enough of us who have
encountered a situation where physical access is out of the question
or simply not doable.

My thanks to everyone that replied.



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