#!/usr/bin/expect -f # This expect script can be run as: # ./vty bsc # ./vty msc # ./vty sip ... etc # (no need to remember ports) # # One can edit the script itself to configure the preferred # logging configuration for each component. # # The last command to be issued will be logging filter all 1 # This allows for easy recall and issuing of # 'logging filter all 0' to disable logging. # As an alternative one call call this script as # ./vty bsc 0 to disable logging on startup via the filter. # # Requires expect, available on most distributions. set host localhost set quiet 0 set vty [lindex $argv 0] set lf [lindex $argv 1] set all [lindex $argv 2] set h [lindex $argv 3] set port 0 if { $lf < 0 } { set lf 1 } if { $all < 0 } { set all notice } if { $all == "dq" } { set all debug set quiet 1 } if { $h > 0 } { set host 127.0.0.2 } switch $vty { e1 { set port 4269 } hlr { set port 4258 } ; # Short names bsc { set port 4242 } mgw { set port 4243 } sg { set port 4245 } msc { set port 4254 } sip { set port 4256 } gg { set port 4260 } ggsn { set port 4260 } hnbgw { set port 4261 } stp { set port 4239 } mob { set port 4247 } bts { set port 4241 } trx { set port 4237 } pcu { set port 4240 } osmo-hlr { set port 4258 } ; # Same but with full names of osmo-daemons: osmo-bsc { set port 4242 } osmo-mgw { set port 4243 } osmo-mgw-for-bsc { set port 4243 } osmo-mgw-for-msc { set host 127.0.0.2 set port 4243 } osmo-sgsn { set port 4245 } osmo-msc { set port 4254 } osmo-sip-connector { set port 4256 } osmo-ggsn { set port 4260 } osmo-hnbgw { set port 4262 } default { set port 4242 } ; # Default to osmo-bsc / osmo-nitb } if { $port == 0 } { send "Which vty?\n" exit } spawn -noecho telnet $host $port expect ">" send "enable\r" expect "#" send "logging enable\r" expect "#" send "logging print category 1\r" expect "#" send "logging print category-hex 0\r" expect "#" send "logging print level 1\r" expect "#" send "logging print file basename last\r" expect "#" send "logging print extended-timestamp 1\r" expect "#" send "logging level set-all $all\r" expect "#" # Customise logging configuration per daemon here: if { $quiet==1 } { # These levels are very noisy at debug: send "logging level lctrl info\r" expect "#" send "logging level lmi info\r" expect "#" send "logging level linp info\r" expect "#" send "logging level lgsup notice\r" expect "#" send "logging level lsccp info\r" expect "#" send "logging level lss7 info\r" expect "#" send "logging level lm3ua info\r" expect "#" send "logging level lsua info\r" expect "#" switch $vty { msc { send "logging level smpp info\r" expect "#" } } } switch $vty { hlr { send "logging level mslookup info\r" expect "#" } msc { send "logging level mncc debug\r" expect "#" send "logging level lsms notice\r" expect "#" send "logging level mm info\r" expect "#" send "logging level lglobal debug\r" expect "#" } mgw { send "logging level lmib error\r" expect "#" send "logging level lglobal notice\r" expect "#" send "logging level rtp error\r" expect "#" send "logging level e1 error\r" expect "#" } sg { send "logging level mm error\r" expect "#" send "logging level lglobal error\r" expect "#" send "logging level gprs info\r" expect "#" } } send "logging filter all $lf\r" # If we want to be quiet, some programs don't apply the filter # So exec these command last, (for easy callback) if { $lf==0 && ($vty=="hlr" || $vty=="mgw")} { send "logging level set-all $all\r" expect "#" send "logging level set-all fatal\r" expect "#" } expect "#" interact