Skip to content

Commit d2cde0b

Browse files
author
HD Moore
committed
Make error handling consistent in SNMP modules
1 parent b357d22 commit d2cde0b

File tree

8 files changed

+35
-29
lines changed

8 files changed

+35
-29
lines changed

modules/auxiliary/scanner/misc/oki_scanner.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ def run_host(ip)
101101
end
102102
end
103103

104-
disconnect_snmp()
105-
106-
rescue SNMP::RequestTimeout
107-
print_status("#{ip}, SNMP request timeout.")
104+
# No need to make noise about timeouts
105+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
108106
rescue ::Interrupt
109107
raise $!
110108
rescue ::Exception => e
111-
print_status("Unknown error: #{e.class} #{e}")
109+
print_error("#{ip} Error: #{e.class} #{e} #{e.backtrace}"
110+
ensure
111+
disconnect_snmp
112112
end
113113
end

modules/auxiliary/scanner/snmp/aix_version.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,11 @@ def run_host(ip)
6969

7070
print_status(status)
7171
end
72-
disconnect_snmp
73-
rescue SNMP::RequestTimeout, Rex::ConnectionError, ::Errno::ECONNREFUSED
72+
73+
# No need to make noise about timeouts
74+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
75+
rescue ::Interrupt
76+
raise $!
7477
rescue Exception => e
7578
print_error("#{ip} #{e.class}, #{e.message}")
7679
ensure

modules/auxiliary/scanner/snmp/cisco_config_tftp.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,14 @@ def run_host(ip)
153153
varbind = SNMP::VarBind.new("#{cccopyentryrowstatus}#{session}", SNMP::Integer.new(6))
154154
value = snmp.set(varbind)
155155

156-
disconnect_snmp
157-
158156
# No need to make noise about timeouts
159-
rescue ::SNMP::RequestTimeout, ::Rex::ConnectionRefused
157+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
160158
rescue ::Interrupt
161159
raise $!
162160
rescue ::Exception => e
163161
print_error("#{ip} Error: #{e.class} #{e} #{e.backtrace}")
162+
ensure
163+
disconnect_snmp
164164
end
165165
end
166166

modules/auxiliary/scanner/snmp/cisco_upload_file.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,16 @@ def run_host(ip)
127127
varbind = SNMP::VarBind.new("#{ciscoFlashCopyEntryStatus}#{session}" , SNMP::Integer.new(1))
128128
value = snmp.set(varbind)
129129

130-
disconnect_snmp
130+
131131

132132
# No need to make noise about timeouts
133-
rescue ::SNMP::RequestTimeout, ::Rex::ConnectionRefused
133+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
134134
rescue ::Interrupt
135135
raise $!
136136
rescue ::Exception => e
137137
print_error("#{ip} Error: #{e.class} #{e} #{e.backtrace}")
138+
ensure
139+
disconnect_snmp
138140
end
139141
end
140142

modules/auxiliary/scanner/snmp/snmp_enum.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -951,20 +951,22 @@ def run_host(ip)
951951

952952
print_line('')
953953

954-
disconnect_snmp
954+
955955

956956
rescue SNMP::RequestTimeout
957-
vprint_status("#{ip}, SNMP request timeout.")
958-
rescue Errno::ECONNREFUSED
959-
print_status("#{ip}, Connection refused.")
957+
vprint_status("#{ip} SNMP request timeout.")
958+
rescue Rex::ConnectionError
959+
print_status("#{ip} Connection refused.")
960960
rescue SNMP::InvalidIpAddress
961-
print_status("#{ip}, Invalid Ip Address. Check it with 'snmpwalk tool'.")
961+
print_status("#{ip} Invalid IP Address. Check it with 'snmpwalk tool'.")
962962
rescue SNMP::UnsupportedVersion
963-
print_status("Unsupported SNMP version specified. Select from '1' or '2c'.")
963+
print_status("#{ip} Unsupported SNMP version specified. Select from '1' or '2c'.")
964964
rescue ::Interrupt
965965
raise $!
966966
rescue ::Exception => e
967967
print_status("Unknown error: #{e.class} #{e}")
968+
ensure
969+
disconnect_snmp
968970
end
969971
end
970972

modules/auxiliary/scanner/snmp/snmp_enumshares.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,13 @@ def run_host(ip)
5959
)
6060
end
6161

62-
rescue ::SNMP::UnsupportedVersion
63-
rescue ::SNMP::RequestTimeout
62+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
6463
rescue ::Interrupt
6564
raise $!
6665
rescue ::Exception => e
67-
print_error("Unknown error: #{e.class} #{e}")
66+
print_error("#{ip} Unknown error: #{e.class} #{e}")
67+
ensure
68+
disconnect_snmp
6869
end
6970

7071
end

modules/auxiliary/scanner/snmp/snmp_set.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,18 @@ def run_host(ip)
8484
print_status("#{ip} - OID not writable or does not provide WRITE access with community '#{comm}'")
8585
end
8686

87-
disconnect_snmp
88-
8987
rescue ::SNMP::RequestTimeout
9088
print_error("#{ip} - SNMP request timeout with community '#{comm}'.")
91-
rescue ::Rex::ConnectionRefused
89+
rescue ::Rex::ConnectionError
9290
print_error("#{ip} - 'Connection Refused'")
9391
rescue SNMP::UnsupportedVersion
9492
print_error("#{ip} - Unsupported SNMP version specified. Select from '1' or '2c'.")
9593
rescue ::Interrupt
9694
raise $!
9795
rescue ::Exception => e
9896
print_error("#{ip} Error: #{e.class} #{e} #{e.backtrace}")
97+
ensure
98+
disconnect_snmp
9999
end
100100
end
101101

modules/auxiliary/scanner/snmp/xerox_workcentre_enumusers.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,14 @@ def run_host(ip)
5858
end
5959
end
6060

61-
disconnect_snmp
62-
6361
# No need to make noise about timeouts
64-
rescue ::SNMP::UnsupportedVersion
65-
rescue ::SNMP::RequestTimeout
66-
rescue ::Rex::ConnectionRefused
62+
rescue ::Rex::ConnectionError, ::SNMP::RequestTimeout, ::SNMP::UnsupportedVersion
6763
rescue ::Interrupt
6864
raise $!
6965
rescue ::Exception => e
7066
print_error("#{ip} Error: #{e.class} #{e} #{e.backtrace}")
67+
ensure
68+
disconnect_snmp
7169
end
7270
end
7371
end

0 commit comments

Comments
 (0)