configuring command prompt in Asterisk CLI

  1. I am trying to set up color prompt in asterisk CLI. In the documentation I have found this:

    %Cn[;n] Change terminal foreground (and optional background) color to specified. A full list of colors may be found in include/asterisk/term.h*

    But nowhere could I find what format the color code should be. I have tried all possible permutations, none of them works:

    ASTERISK_PROMPT="%Cn[COLOR_BLUE] %H: " asterisk -vvvvvvr
    ASTERISK_PROMPT="%Cn[32;128] %H: " asterisk -vvvvvvr
    ASTERISK_PROMPT="%Cn[32;] %H: " asterisk -vvvvvvr
    ASTERISK_PROMPT="%Cn[;32] %H: " asterisk -vvvvvvr
    ASTERISK_PROMPT="%Cn[;COLOR_CYAN] %H: " asterisk -vvvvvvr
    ASTERISK_PROMPT="%Cn[32|128] %H: " asterisk -vvvvvvr 
    

    can somebody please tell me how to make my asterisk prompt red, for example?

  2. Also, I have another issue with the CLI prompt:

    I am using Asterisk 11.13 on Debian Wheezy. When I am in asterisk CLI, I can use command history and "readline-like" functions such as CTRL+r to search. But not all functions are available. For example, the alternate mappings for "page up" and "page down" to search the history do not work. They work in everything else (bash, mysql, ..)

    $ cat /etc/inputrc
    "\e[5~": history-search-forward
    "\e[6~": history-search-backward
    

    is there a way to make it work in asterisk ?


The "ASTERISK_PROMPT" is an environment variable and should be set prior to starting the CLI for it to take affect.

i.e.

export ASTERISK_PROMPT="%C31%H*CLI%#"
asterisk -r

As for your specific version, (Asterisk 11 branch) The reasons for not displaying colors is as follows:

  1. The command-line options to connect to the server includes the "no-color" flag.
  2. No "term" environment variable is defined.
  3. If the terminfo database exists, and either does not include a max_colors definition, or the value = 0.
  4. The "term" environment variable does not include one of the following:
    • "xterm"
    • "xterm-color"
    • "xterm-256color"
    • "Eterm"
    • "vt100"
    • "crt"

If any of those criteria are met... you won't get vt100 colors.

This information is taken directly from the source-code.


About color issue.

  1. First thing to try:
    • kill all asterisk:

      killall safe_asterisk

      killall asterisk

    • set your TERM: export TERM=xterm-256color

    • run asterisk from terminal: /usr/sbin/asterisk -c (path may differ)

I'm sure you'll see it colorful.

  1. If 1. was OK, then dig into how is asterisk run from system. The only issue I have was when asterisk init script was /etc/init.d/asterisk, but was run with systemctl. Looks to me, that systemctl somehow has it's own TERM preferences used at the moment asterisk starts. But, I forced things and added COLOR=yes in /etc/init.d/asterisk. And this may be forced even more if you put in this script export TERM=xterm-256color, but usability is up to you.