# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
-# source. A copy of the CDDL is also available via the Internet at
+# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#
try:
opts, args = getopt.gnu_getopt(sys.argv[1:],
- 'ha:g:i:m:n', ['help', 'address=', 'gateway=',
- 'interface=', 'netmask=', 'nameserver='])
+ 'ha:g:i:m:n:r', ['help', 'address=', 'gateway=',
+ 'interface=', 'netmask=', 'nameserver=', 'record'])
except getopt.GetoptError as err:
print str(err)
usage()
sys.exit(2)
address = gateway = interface = netmask = nameserver = None
+ record = False
if opts:
for o, a in opts:
netmask = a
elif o in ('-n', '--nameserver'):
nameserver = a
+ elif o in ('-r', '--record'):
+ record = True
else:
assert False, 'Unhandled option'
if interactive:
nic = make_menu(interfaces)
else:
- nic[0] = options[0]
+ nic = options
+ found = False
+ for i in interfaces:
+ if nic[0] == i[0]:
+ found = True
+ break
+ if not found:
+ err = '%s: No such interface' % nic[0]
+ raise RuntimeError(err)
if nic:
if interactive:
(ip,mask,gw) = get_config()
mask = options[2]
gw = options[3]
cmd = 'ipadm delete-if %s' % nic[0]
- runcmd(cmd)
+ if record:
+ print cmd
+ else:
+ runcmd(cmd)
cmd = 'ipadm create-if %s' % nic[0]
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
+ if record:
+ print cmd
+ else:
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
if not ip:
# use DHCP
cmd = 'ipadm create-addr -T dhcp %s/v4' % nic[0]
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
+ if record:
+ print cmd
+ else:
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
else:
# use STATIC
cmd = 'ipadm create-addr -T static -a %s/%s %s/v4' % (ip, mask, nic[0])
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
+ if record:
+ print cmd
+ else:
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
if gw:
cmd = 'route -p add default %s' % gw
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
- cmd = 'netstat -rn -finet'
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
- print 'New route table'
- print out
+ if record:
+ print cmd
+ else:
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
+ if not record:
+ cmd = 'netstat -rn -finet'
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
+ print 'New route table'
+ print out
if interactive:
dns = raw_input('Configure DNS [n]? ').lower()
else:
cmd = "echo 'nameserver %s' >> /etc/resolv.conf " % dns
cmd += '&& cp /etc/nsswitch.conf{,.bak} '
cmd += '&& cp /etc/nsswitch.{dns,conf}'
- (out, err) = runcmd(cmd)
- if err:
- raise RuntimeError(err)
+ if record:
+ print cmd
+ else:
+ (out, err) = runcmd(cmd)
+ if err:
+ raise RuntimeError(err)
else:
print "Found no unassigned interfaces"
except ParserError as e: