Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Apr 2011 15:41:46 +0000
From:      Alexander Best <arundel@freebsd.org>
To:        Devin Teske <dteske@vicor.com>
Cc:        freebsd-hackers@freebsd.org, freebsd-questions@freebsd.org, "'Teske, Devin'" <Devin.Teske@fisglobal.com>
Subject:   Re: [UPDATE] host-setup(1): a dialog(1)-based utility for configuring FreeBSD
Message-ID:  <20110422154146.GA26083@freebsd.org>
In-Reply-To: <D4CD82A6E176493DAF1B14B08F76AE2B@shxd.ath.cx>
References:  <02a701cc006a$887da210$9978e630$@vicor.com> <20110422145518.GA16734@freebsd.org> <D4CD82A6E176493DAF1B14B08F76AE2B@shxd.ath.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri Apr 22 11, Devin Teske wrote:
> 
> 
> > -----Original Message-----
> > From: Alexander Best [mailto:arundel@freebsd.org]
> > Sent: Friday, April 22, 2011 7:55 AM
> > To: Devin Teske
> > Cc: freebsd-hackers@freebsd.org; freebsd-questions@freebsd.org; Teske,
> > Devin
> > Subject: Re: [UPDATE] host-setup(1): a dialog(1)-based utility for
> > configuring FreeBSD
> > 
> > On Thu Apr 21 11, Devin Teske wrote:
> > > Hi List Members!
> > >
> > >
> > >
> > > I'm proud to announce the first update to my host-setup utility (a
> > > dialog(1)-based host configurator for FreeBSD). The following changes
> > have been
> > > made:
> > >
> > >
> > >
> > > - fixed bug where /etc/resolv.conf would be created with 0600
> > permissions
> > >
> > > - fixed bug when switching from one default gateway to NO default
> > gateway
> > >
> > > - fixed typo in the title of netmask prompt and ifconfig options dialog
> > >
> > > - fixed bug that prevented entry of netmask if no netmask is configured
> > >
> > >
> > >
> > > You can get the updated version here:
> > >
> > >
> > >
> > > http://druidbsd.sourceforge.net/download/host-setup.txt
> > 
> > otaku% sudo ./host-setup.txt
> > User cancelled.
> > otaku% echo $?
> > 1
> > otaku%
> 
> Can you provide me with the output of "uname -spr"?

FreeBSD 9.0-CURRENT amd64

> 
> It's working fine for me on FreeBSD 8.1-RELEASE i386.
> 
> Where you're bombing out is line 2403:
> [ $retval -eq 0 ] || die "User cancelled."
> 
> Functionally, that is testing the return status of dialog(1) for the initial
> menu. See if you can execute this (a rough approximation of the initial
> menu):
> 
> dialog --clear --title foo --hline bar --menu abc 17 55 9 1 a 2 b 3 c 4 d 5
> e X x 2> /tmp/dialog.menu.foo

doesn't work. :(

otaku% echo $?
255
otaku% cat /tmp/dialog.menu.foo 

Error: Unknown option --hline.
Use --help to list options.


otaku%

taku% whereis dialog
dialog: /usr/bin/dialog /usr/share/man/en.ISO8859-15/man1/dialog.1.gz /usr/src/gnu/usr.bin/dialog

otaku% /usr/bin/dialog
cdialog (ComeOn Dialog!) version 1.1-20100428
Copyright 2000-2007,2008 Thomas E. Dickey
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[...]

> 
> A menu should appear. Select an item and then execute for me:
> 
> echo $?
> 
> If the above doesn't work, then I suspect that your dialog(1) is not working
> properly. I'd then go and try this as a sanity check:
> 
> cd /usr/share/examples/dialog

otaku% cd /usr/share/examples/dialog 
cd: no such file or directory: /usr/share/examples/dialog

> sh menubox
> echo $?
> 
> The result in both cases (as long as you actually select a menu item) should
> be "0".
> 
> Also... (just as a sanity check for me) your /bin/sh is not a symlink to
> bash is it?

otaku% file /bin/sh 
/bin/sh: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), for FreeBSD 9.0 (900034), stripped

> --
> Devin
> 
> 
> > 
> > >
> > > or
> > >
> > > http://druidbsd.sourceforge.net/download/host-setup.gz
> > >
> > > or
> > >
> > > http://druidbsd.sourceforge.net/
> > >
> > >
> > >
> > >
> > >
> > > For those not familiar with my host-setup(1) utility, it is a 2,500+
> > line shell
> > > script that utilizes the dialog(1) utility to walk the system
> > administrator
> > > through setting up their TimeZone, Hostname, Network Interfaces, Default
> > > Gateway, and DNS. Our custom FreeBSD installer sets this script as the
> > root
> > > login shell, making it very easy for field engineers to quickly get a
> > system on
> > > the network without having to use the command-line (and without having
> > to reboot
> > > either). Underneath the hood - behind the system of prompts and dialogs
> > - this
> > > script manages both the contents of /etc/rc.conf, /etc/resolv.conf, and
> > others
> > > as well as utilizing ifconfig(8), route(8), and many other tools to
> > avoid
> > > requiring a reboot, prompting you if you would like to make the new
> > changes
> > > effective when values are changed from their active settings.
> > >
> > >
> > >
> > > Here's the patch to show the details:
> > >
> > >
> > >
> > > --- host-setup.3_0   2011-02-10 19:14:30.000000000 -0800
> > >
> > > +++ host-setup  2011-04-21 13:38:58.000000000 -0700
> > >
> > > @@ -2,12 +2,12 @@
> > >
> > > # -*- tab-width:  4 -*- ;; Emacs
> > >
> > > # vi: set tabstop=4     :: Vi/ViM
> > >
> > > #
> > >
> > > -# Revision: 3.0
> > >
> > > +# Revision: 3.1
> > >
> > > # Created: September 21st, 2010
> > >
> > > -# Last Modified: December 6th, 2010
> > >
> > > +# Last Modified: April 21st, 2011
> > >
> > > ############################################################ COPYRIGHT
> > >
> > > #
> > >
> > > -# Devin Teske (c)2006-2010. All Rights Reserved.
> > >
> > > +# Devin Teske (c)2006-2011. All Rights Reserved.
> > >
> > > #
> > >
> > > # Redistribution and use in source and binary forms, with or without
> > >
> > > # modification, are permitted provided that the following conditions
> > >
> > > @@ -1353,8 +1353,10 @@ dialog_input_hostname()
> > >
> > >           # permissions and ownership to match resolv.conf(5) before
> > >
> > >           # we write it out and mv(1) it into place).
> > >
> > >           #
> > >
> > > -          quietly chmod "$( stat -f '%#Lp'  "$RESOLV_CONF" )"
> > "$tmpfile"
> > >
> > > -          quietly chown "$( stat -f '%u:%g' "$RESOLV_CONF" )"
> > "$tmpfile"
> > >
> > > +          local mode="$( stat -f '%#Lp' "$RESOLV_CONF" 2> /dev/null )"
> > >
> > > +          local owner="$( stat -f '%u:%g' "$RESOLV_CONF" 2> /dev/null
> > )"
> > >
> > > +          quietly chmod "${mode:-0644}" "$tmpfile"
> > >
> > > +          quietly chown "${owner:-root:wheel}" "$tmpfile"
> > >
> > >            #
> > >
> > >           # Operate on resolv.conf(5), replacing only the last
> > >
> > > @@ -1646,7 +1648,7 @@ dialog_input_netmask()
> > >
> > >     #
> > >
> > >     while :; do
> > >
> > > -          dialog --title "$brand${band:+}${progname:-$0}"         \
> > >
> > > +          dialog --title "$brand${brand:+ }${progname:-$0}"       \
> > >
> > >                  --hline "Use numbers, punctuation, TAB or ENTER" \
> > >
> > >                  --inputbox "$msg" 10 50                          \
> > >
> > >                  "$_netmask"                                      \
> > >
> > > @@ -1664,7 +1666,7 @@ dialog_input_netmask()
> > >
> > >           [ $retval -eq $SUCCESS ] || return $retval
> > >
> > >            # Return success if NULL value was entered
> > >
> > > -          [ "$_netmask" ] || return $SUCCESS
> > >
> > > +          [ "$_input" ] || return $SUCCESS
> > >
> > >            # Take only the first "word" of the user's input
> > >
> > >           _netmask="$_input"
> > >
> > > @@ -1705,7 +1707,7 @@ dialog_input_options()
> > >
> > >     msg="Please enter additional network media options to be"
> > >
> > >     msg="$msg passed to ifconfig(8) for the $interface interface:"
> > >
> > > -    dialog --title "$brand${band:+}${progname:-$0}"         \
> > >
> > > +    dialog --title "$brand${brand:+ }${progname:-$0}"       \
> > >
> > >            --hline "Use numbers, punctuation, TAB or ENTER" \
> > >
> > >            --inputbox "$msg" 9 70                           \
> > >
> > >            "$options"                                       \
> > >
> > > @@ -2183,9 +2185,12 @@ dialog_menu_netdev_edit()
> > >
> > >                local dr="$( sysrc_get defaultrouter )" err
> > >
> > >                err=$( ifconfig $interface inet $ipaddr \
> > >
> > >                           netmask $netmask $options 2>&1 )
> > >
> > > -               if [ $? -eq $SUCCESS -a "$dr" ]; then
> > >
> > > -                    err=$( route add default "$dr" 2>&1 )
> > >
> > > -                    [ $? -eq $SUCCESS ] || dialog_msgbox "$err"
> > >
> > > +               if [ $? -eq $SUCCESS ]; then
> > >
> > > +                    if [ "$dr" -a "$dr" != "NO" ]; then
> > >
> > > +                          err=$( route add default "$dr" 2>&1 )
> > >
> > > +                          [ $? -eq $SUCCESS ] || \
> > >
> > > +                               dialog_msgbox "$err"
> > >
> > > +                    fi
> > >
> > >                else
> > >
> > >                     dialog_msgbox "$err"
> > >
> > >                fi
> > >
> > > @@ -2524,7 +2529,7 @@ exit $SUCCESS
> > >
> > > #
> > >
> > > # $Header$
> > >
> > > #
> > >
> > > -# $Copyright: 2006-2010. Devin Teske. All Rights Reserved. $
> > >
> > > +# $Copyright: 2006-2011. Devin Teske. All Rights Reserved. $
> > >
> > > #
> > >
> > > # $Log$
> > >
> > > #
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > >
> > > Cheers,
> > >
> > > Devin Teske
> > >
> > >
> > >
> > > -> FUN STUFF <-
> > >
> > > -----BEGIN GEEK CODE BLOCK-----
> > >
> > > Version 3.12
> > >
> > > GAT/CS/B/CC/E/IT/MC/M/MU/P/S/TW d+(++) s: a- C+++@$ UB++++$ P++++@$
> > L++++$ E-
> > >
> > > W+++ N? o? K? w@ O M++$ V- PS+>++ PE@ Y+ PGP-> t(+) 5? X(+) R(-) tv+
> > b+>++ DI+
> > >
> > > D+(++) G++ e>++++ h r+++ z+++
> > >
> > > ------END GEEK CODE BLOCK------
> > >
> > > Learn about the "Geek Code": http://www.geekcode.com/
> > >
> > >
> > >
> > > -> LEGAL DISCLAIMER <-
> > >
> > > This message  contains confidential  and proprietary  information
> > >
> > > of the sender,  and is intended only for the person(s) to whom it
> > >
> > > is addressed. Any use, distribution, copying or disclosure by any
> > >
> > > other person  is strictly prohibited.  If you have  received this
> > >
> > > message in error,  please notify  the e-mail sender  immediately,
> > >
> > > and delete the original message without making a copy.
> > >
> > >
> > >
> > > -> END TRANSMISSION <-
> > >
> > > _____________
> > >
> > > The information contained in this message is proprietary and/or
> > confidential. If you are not the intended recipient, please: (i) delete
> > the message and all copies; (ii) do not disclose, distribute or use the
> > message in any manner; and (iii) notify the sender immediately. In
> > addition, please be aware that any message addressed to our domain is
> > subject to archiving and review by persons other than the intended
> > recipient. Thank you.
> > > _____________
> > 
> > --
> > a13x
> 
> _____________
> 
> The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.
> _____________

-- 
a13x



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