Sha256: 9f54d17302394c22886c98e2a57e1991de49725309f19c4e0995e85c3064ceaf

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

#!/usr/bin/env ruby
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)).untaint, '/..')

require 'netutils'

################################################################################
def usage
	STDERR.print "\
Usage:
	#{$progname} [-d] (up|down) <Switch IP address> <port>
Example:
	#{$progname} up 192.168.0.1 GigabitEthernet 1/2/3
	#{$progname} down 192.168.0.2 GigabitEthernet 1/2/3
"
	exit 1
end

#
if ARGV[0] === '-d'
	ARGV.shift
	dry = true
end
usage if ARGV.size < 3

#
cmd  = ARGV.shift
ia   = ARGV.shift
port = ARGV.shift
while ARGV.size > 0
	port += ' ' + ARGV.shift
end

#
case cmd
when 'up'
	msg = 'bringing up'
when 'down'
	msg = 'shutting down'
else
	usage
end

name = 'unknown'
begin
	log_without_newline "Connecting to #{ia}... "
	sw = Switch.new(nil, Switch::Type::ROUTER, ia)
	sw.login
	log 'done'
	name = sw.name

	port = sw.interface_name(port)
	interface_sanity_check(name, port)
	log_without_newline "#{msg.capitalize} #{port} on #{name} (#{ia})... "

	if dry
		log 'skip (due to -d, dry run, option)'
		exit 0
	elsif cmd === 'down'
		sw.interface_shutdown(port)
		s = File.expand_path(__FILE__)
		log 'done'
		log "please run below command on recovery:\n"
		log "\t#{s} up #{ia} \'#{port}\'\n"
	else
		sw.interface_noshutdown(port)
		log 'done'
	end
	exitcode = 0
rescue => e
	r = ' FAILED'
	log "\n#{r}: #{e.to_s}"
	log "ERROR: Cannot #{msg} #{port} on #{name} #{ia}"
	exitcode = 1
end

mail "Port #{cmd.upcase}#{r}: #{name} #{ia} #{port}", log_buffer

exit exitcode

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
netutils-0.1.2 bin/port-shutdown
netutils-0.1.1 bin/port-shutdown