Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- routeros: support store mode `on_significant` (@infabo)
- model for Grandstream HT8xx (@mklopocki)
- Add --support option to gather system diagnostics (@robertcheramy)
- Add `tmos_aaa` model for F5 TMOS devices using AAA authentication

### Changed
- input/ssh: validate that cmd is a String. See #3700 (@robertcheramy)
Expand Down
1 change: 1 addition & 0 deletions docs/Supported-OS-Types.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
| |XOS, ExtremeWare |[xos](/lib/oxidized/model/xos.rb)
|F5 |F5OS |[tmos](/lib/oxidized/model/f5os.rb)
| |TMOS |[tmos](/lib/oxidized/model/tmos.rb)
| |TMOS with AAA |[tmos](/lib/oxidized/model/tmos_aaa.rb)
|Fiberstore (fs.com) |S3400 |[fsos](/lib/oxidized/model/fsos.rb) | |[FSOS](Model-Notes/FSOS.md)
| |S3800 |[gcombnps](/lib/oxidized/model/gcombnps.rb)
| |S3900 |[edgecos](/lib/oxidized/model/edgecos.rb)
Expand Down
63 changes: 63 additions & 0 deletions lib/oxidized/model/tmos_aaa.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
class TMOS < Oxidized::Model
using Refinements

# Use this model if you have AAA configured in tmos
# See https://github.com/ytti/oxidized/issues/437
# F5 KB: https://my.f5.com/manage/s/article/K28660000

comment '# '

cmd :secret do |cfg|
cfg.gsub!(/^([\s\t]*)secret \S+/, '\1secret <secret removed>')
cfg.gsub!(/^([\s\t]*\S*)password \S+/, '\1password <secret removed>')
cfg.gsub!(/^([\s\t]*\S*)passphrase \S+/, '\1passphrase <secret removed>')
cfg.gsub!(/community \S+/, 'community <secret removed>')
cfg.gsub!(/community-name \S+/, 'community-name <secret removed>')
cfg.gsub!(/^([\s\t]*\S*)encrypted \S+$/, '\1encrypted <secret removed>')
cfg
end

cmd('run /util bash -c "tmsh -q show sys version"') { |cfg| comment cfg }

cmd('run /util bash -c "tmsh -q show sys software"') { |cfg| comment cfg }

cmd 'run /util bash -c "tmsh -q show sys hardware field-fmt"' do |cfg|
cfg.gsub!(/fan-speed (\S+)/, '')
cfg.gsub!(/temperature (\S+)/, '')
cfg.gsub!(/humidity (\S+)/, '')
comment cfg
end

cmd('run /util bash -c "cat /config/bigip.license"') { |cfg| comment cfg }

cmd 'run /util bash -c "tmsh -q list"' do |cfg|
cfg.gsub!(/state (up|down|checking|irule-down)/, '')
cfg.gsub!(/errors (\d+)/, '')
cfg.gsub!(/^\s+bandwidth-bps (\d+)/, '')
cfg.gsub!(/^\s+bandwidth-cps (\d+)/, '')
cfg.gsub!(/^\s+bandwidth-pps (\d+)\n/, '')
cfg.gsub!(/^\s*\S*encrypted \S+\n/, '')
cfg
end

cmd('run /util bash -c "tmsh -q list net route all"') { |cfg| comment cfg }

cmd('run /util bash -c "/bin/ls --full-time --color=never /config/ssl/ssl.crt"') { |cfg| comment cfg }

cmd('run /util bash -c "/bin/ls --full-time --color=never /config/ssl/ssl.key"') { |cfg| comment cfg }

cmd 'run /util bash -c "tmsh -q show running-config sys db all-properties"' do |cfg|
cfg.gsub!(/sys db configsync.localconfigtime {[^}]+}/m, '')
cfg.gsub!(/sys db gtm.configtime {[^}]+}/m, '')
cfg.gsub!(/sys db ltm.configtime {[^}]+}/m, '')
comment cfg
end

cmd('run /util bash -c "[ -d "/config/zebos" ] && cat /config/zebos/*/ZebOS.conf"') { |cfg| comment cfg }

cmd('run /util bash -c "cat /config/partitions/*/bigip*.conf"') { |cfg| comment cfg }

cfg :ssh do
exec true # don't run shell, run each command in exec channel
end
end