How to add ? character in update-check url?

Hi,

I have created a function app in Azure to dynamically generate the version.json file depending on the ISO images in a storage account. Everything is working fine so far but to restrict access to this function app I can pass a token with this URL.
Unfortunately, I am not ablte to add the ? charater to the URL as it will always show the help message for this configuration option. Copy and paste also didn’t work.
Any idea how I can add a normal URL containing a ? charater to pass a query string with this URL?

set system update-check url <url>

Thanks.

When you type the command, does it still show the helpinfo even if you typed the variable with a ’ at beginning (and end if successful)?

set system update-check url 'https://example.com?

Otherwise this sounds like something to report at https://vyos.dev

A workaround until resolved (if the ’ trick didnt work) would be to manually edit /config/config.boot file and then reboot the device (there is also a reload command if you dont want to reboot the box but I would try to reboot since coldbooting is what happens if your box lose its power sometimes in future).

Thanks for the trick but unfortunately it doesn’t help. As soon as I press the ? key the helpinfo is shown. I will open a bug report.

It’s probably wontfix
You can try to use Ansible to configure or edit the config file via nano

I think it should be fixable by enforcing a whitespace before the “?” for the help to show up.

Like if you type “show interface?” nothing should happen but the help would show up if you type “show interface ?” (aka space + “?” or tab + “?”).

Another workaround for the cli would be to enforce a tab after the “?” for the help to show up.

Like if you type “show interface?” nothing happens but if you type “show interface?” then the helpinfo would show up.

Both methods could of course be implemented at once to support whatever method the admin prefers.

And both methods would mean that typing set system update-check url 'https://example.com?var=value' would be supported.

1 Like

Codewise in the sourcecode for the cli engine it would be something along with (pseudo code):

# Init variable to contain whitespace as a starter
PREVCHAR = ' '

# Placeholder for loop
LABEL INPUT

# Read keystroke
CHAR = READ(keystroke)

# SHOWHELP (for current context) only if "?" char is followed by a whitespace OR if a "?" char is followed by a tab
IF (CHAR == "?" AND PREVCHAR = whitespace) OR (CHAR == tab AND PREVCHAR = "?") THEN
   SHOWHELP(context)
END

# Set current char to prevchar for next round of the loop
PREVCHAR = CHAR

# Loop to placeholder
GOTO INPUT

I noticed a similar issue when trying to use the ? character as part of my account password. I ended up using another character.

Press Ctrl+v which makes bash insert the next character literally. Then press ? to insert that character.

I always use this if I need to insert tabs or newlines on a commandline.

1 Like

Cool! Thanks, didn’t know this.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.