这是indexloc提供的服务,不要输入任何密码
Skip to content

[config-plugin]: variables with spaces are not handled via ssh #820

@michaelshobbs

Description

@michaelshobbs

In attempting to get tests running again, I've been banging my head against this issue. Additionally config:get does not return the entire multi-word variable. As you can see from the trace output, quoting is happening locally but getting over ssh no matter the amount of escaping I've tried.

Any thoughts or magic would be greatly appreciated. 😄

$ ssh dokku@dokku.me config:set test-config-638 CONFTEST=config-test HELLO='Hello World'
Usage: dokku config:set APP KEY1=VALUE1 [KEY2=VALUE2 ...]
Must specify KEY and VALUE to set.

Trace output over ssh:

++ id -un
+ [[ dokku != \d\o\k\k\u ]]
+ [[ -n config:set test-config-638 CONFTEST=config-test HELLO=Hello World ]]
+ export -n SSH_ORIGINAL_COMMAND
+ /usr/local/bin/dokku config:set test-config-638 CONFTEST=config-test HELLO=Hello World
++ id -un
+ [[ dokku != \d\o\k\k\u ]]
+ [[ -n '' ]]
+ case "$1" in
+ implemented=0
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/00_dokku-standard/commands config:set test-config-638 CONFTEST=config-test HELLO=Hello World
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/apps/commands config:set test-config-638 CONFTEST=config-test HELLO=Hello World
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/backup/commands config:set test-config-638 CONFTEST=config-test HELLO=Hello World
+ CURRENT_BACKUP_VERSION=1
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/config/commands config:set test-config-638 CONFTEST=config-test HELLO=Hello World
+ [[ -n 1 ]]
+ set -x
+ ENV_FILE=/home/dokku/test-config-638/ENV
+ ENV_FILE_TEMP=/home/dokku/test-config-638/ENV.tmp
+ case "$1" in
+ [[ -z test-config-638 ]]
+ [[ ! -d /home/dokku/test-config-638 ]]
+ APP=test-config-638
+ [[ -z CONFTEST=config-test HELLO=Hello World ]]
+ config_create
+ '[' -f /home/dokku/test-config-638/ENV ']'
+ ENV_ADD=
++ cat /home/dokku/test-config-638/ENV
+ ENV_TEMP='export CONFTEST='\''config-test'\''
export HELLO='\''Hello World'\'''
+ RESTART_APP=false
+ shift 2
+ for var in '"$@"'
+ [[ CONFTEST=config-test != *\=* ]]
+ for var in '"$@"'
+ [[ HELLO=Hello != *\=* ]]
+ for var in '"$@"'
+ [[ World != *\=* ]]

Trace output locally:

++ id -un
+ [[ root != \d\o\k\k\u ]]
+ [[ config:set != plugins-install* ]]
+ [[ config:set != \p\l\u\g\i\n\s\-\u\p\d\a\t\e ]]
+ sudo -u dokku -E -H /usr/local/bin/dokku config:set test-config-638 CONFTEST=config-test 'HELLO=Hello World'
++ id -un
+ [[ dokku != \d\o\k\k\u ]]
+ [[ -n '' ]]
+ case "$1" in
+ implemented=0
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/00_dokku-standard/commands config:set test-config-638 CONFTEST=config-test 'HELLO=Hello World'
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/apps/commands config:set test-config-638 CONFTEST=config-test 'HELLO=Hello World'
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/backup/commands config:set test-config-638 CONFTEST=config-test 'HELLO=Hello World'
+ CURRENT_BACKUP_VERSION=1
+ case "$1" in
+ exit 10
+ exit_code=10
+ set -e
+ '[' 10 -eq 10 ']'
+ continue
+ for script in '$PLUGIN_PATH/*/commands'
+ set +e
+ /var/lib/dokku/plugins/config/commands config:set test-config-638 CONFTEST=config-test 'HELLO=Hello World'
+ [[ -n 1 ]]
+ set -x
+ ENV_FILE=/home/dokku/test-config-638/ENV
+ ENV_FILE_TEMP=/home/dokku/test-config-638/ENV.tmp
+ case "$1" in
+ [[ -z test-config-638 ]]
+ [[ ! -d /home/dokku/test-config-638 ]]
+ APP=test-config-638
+ [[ -z CONFTEST=config-test HELLO=Hello World ]]
+ config_create
+ '[' -f /home/dokku/test-config-638/ENV ']'
+ ENV_ADD=
++ cat /home/dokku/test-config-638/ENV
+ ENV_TEMP='export CONFTEST='\''config-test'\''
export HELLO='\''Hello World'\'''
+ RESTART_APP=false
+ shift 2
+ for var in '"$@"'
+ [[ CONFTEST=config-test != *\=* ]]
+ for var in '"$@"'
+ [[ HELLO=Hello World != *\=* ]]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions