Skip to main content

Shell Behavior

Detailed documentation of CLI shell features and behavior.

Modes​

The CLI operates in two modes, mirroring JunOS/VyOS conventions:

Operational Mode (abng>)​

Purpose: View system state, monitor events, execute operational requests

Prompt: abng>

Available commands:

  • show — Display operational state
  • configure — Enter configuration mode
  • monitor — Real-time event monitoring
  • request — Execute operational requests
  • ping — Ping from BNG
  • traceroute — Traceroute from BNG
  • quit — Exit CLI
  • ? or help — Show help

Example:

abng> show subscribers
abng> monitor subscribers
abng> request subscriber disconnect 1
abng> quit

Configuration Mode (abng#)​

Purpose: Modify the candidate configuration

Prompt: abng#

Available commands:

  • set — Add or modify configuration
  • delete — Remove configuration
  • show — Display candidate configuration
  • show | compare — Show diff vs running config
  • commit — Apply candidate to running config
  • commit confirmed <minutes> — Apply with auto-rollback
  • rollback <n> — Revert to archived config
  • discard — Discard candidate changes
  • exit — Return to operational mode
  • ? or help — Show help

Example:

abng# set pppoe enabled true
abng# set pppoe ac_name "AthenaBNG"
abng# show | compare
abng# commit
abng# exit
KeyAction
TabAuto-complete current word
Shift+TabReverse auto-complete
↑Previous command in history
↓Next command in history
Ctrl+AMove to start of line
Ctrl+EMove to end of line
Ctrl+KDelete from cursor to end of line
Ctrl+UDelete from start of line to cursor
Ctrl+CCancel current input (does not exit)
Ctrl+DExit CLI
BackspaceDelete character before cursor
DeleteDelete character at cursor

Command History​

History is persisted to ~/.abng_history with the following behavior:

  • Max entries: 1000
  • Ignore space: Commands starting with a space are not saved
  • Persistence: History is saved when exiting the CLI
  • Loading: History is loaded when starting the CLI

Example:

# This command is saved
abng> show subscribers

# This command is NOT saved (starts with space)
abng> show subscribers

# View history file
cat ~/.abng_history

Tab Completion​

Tab completion is context-aware and works at every level:

Operational Mode Completion​

abng> show <TAB>
subscribers interfaces vlans routes bgp ospf qos system configuration version

abng> show subscribers <TAB>
detail pppoe dhcp summary

abng> show subscribers detail <TAB>
<session_id>

abng> request <TAB>
subscriber radius system

abng> request subscriber <TAB>
disconnect

abng> request subscriber disconnect <TAB>
<session_id> interface

Configuration Mode Completion​

abng# set <TAB>
system interfaces demux pppoe dhcp radius qos cgnat routing api snmp monitoring

abng# set system <TAB>
hostname router_id timezone log_level log_format ntp_servers dns_servers

abng# set pppoe <TAB>
enabled ac_name mtu mru lcp_echo_interval lcp_echo_failure

abng# delete <TAB>
system interfaces demux pppoe dhcp radius qos cgnat routing api snmp monitoring

Context Help​

Type ? or help to see available commands:

abng> ?
Available commands:
show Show operational state
configure Enter configuration mode
monitor Real-time monitoring
request Execute operational requests
ping Ping from BNG
traceroute Traceroute from BNG
quit Exit CLI

Type a partial command followed by ? to see available options:

abng> show?
Possible completions:
subscribers Show active subscriber sessions
interfaces Show network interfaces
vlans Show dynamic VLAN interfaces
routes Show routing table
bgp Show BGP state
ospf Show OSPF state
qos Show QoS/CAKE status
system Show system information
configuration Show running configuration
version Show software version

abng> show subscribers?
Possible completions:
detail Show detailed subscriber info
pppoe Show PPPoE sessions only
dhcp Show DHCP sessions only
summary Show session count summary

Pipe Filters​

Pipe filters allow you to filter and format output:

abng> show subscribers | match user1
abng> show subscribers | count
abng> show subscribers | no-more
abng> show subscribers | save /tmp/subscribers.txt

Available filters:

  • match <regex> — Filter lines matching regex
  • count — Count matching lines
  • no-more — Disable pager (show all output without pausing)
  • save <file> — Save output to file

Pager Behavior​

Long output is automatically paged using less:

abng> show configuration
(output is paged)
-- More -- (press space to continue, q to quit)

To disable paging:

abng> show configuration | no-more

Error Handling​

Connection Errors​

If abngd is not running:

Error: cannot connect to abngd — is abngd running?

Solution:

sudo systemctl start abngd

Command Syntax Errors​

Error: unknown command: 'show foo'. Type '?' for help.

Solution: Use tab completion or ? to see available commands.

Configuration Validation Errors​

Validation error: invalid IP address: "not-an-ip"

Solution: Check the configuration syntax and try again.

Non-Interactive Mode​

Execute a single command without entering the interactive shell:

/opt/athena-bng/bin/abng -c "show subscribers"
/opt/athena-bng/bin/abng -c "show system"
/opt/athena-bng/bin/abng -c "show configuration | no-more"

Use cases:

  • Scripting and automation
  • Integration with monitoring systems
  • One-off queries

Exiting the CLI​

From Operational Mode​

abng> quit

Or press Ctrl+D.

From Configuration Mode​

abng# exit
abng>

Then:

abng> quit

Or press Ctrl+D twice.

Tips and Tricks​

Save Output to File​

abng> show subscribers | save /tmp/subscribers.txt

Filter Output​

abng> show subscribers | match "pppoe"
abng> show configuration | match "radius"

Count Results​

abng> show subscribers | count
Count: 42

Disable Pager​

abng> show configuration | no-more

View Command History​

cat ~/.abng_history

Clear Command History​

rm ~/.abng_history

Next Steps​