неожиданный EOF при поиске соответствия `) '

460
wapmorgan

Я получаю эту ошибку bash на моем виртуальном хостинге, в задачах cron. Моя команда следующая:

/usr/bin/mysqldump --user=USERNAME --password="C\(mRA0_ifmv\(" DATABASE > ROOTFOLDER/backup/$(date +%F).sql && gzip ROOTFOLDER/backup/$(date +%F).sql 

В целях безопасности я спрятал реального пользователя, базу данных и домашнюю папку . Итак, я понимаю, что мой пароль вызывает эту ошибку, но я не хочу его менять.

Как я могу избежать открытого символа скобки или избежать этой ошибки и почему "\" не работает?

3
Из `man mysqldump`: __Указание пароля в командной строке следует считать небезопасным .__ См. Раздел 6.1.2.1,« Руководство для пользователя по обеспечению безопасности пароля ». Вы можете использовать файл опций, чтобы избежать ввода пароля в командной строке. Hastur 8 лет назад 1
СОГЛАСУЕМОСТИ. Ваша проблема здесь в том, что вы используете `--password =` в первую очередь. Вместо этого используйте INI-файл, и вся проблема исчезнет И станет более безопасной. Shadur 8 лет назад 0

1 ответ на вопрос

2
Steven

Use single quotes for the password.

--password='C\(mRA0_ifmv\(' 

Bash Manual: Single Quotes

Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

Bash Manual: Double Quotes

Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘$’, ‘`’, ‘\’, and, when history expansion is enabled, ‘!’.

Поскольку "\" не является частью пароля, мне нужно удалить обратную косую черту, верно? wapmorgan 8 лет назад 0
Это правильно. Это сработало? Steven 8 лет назад 0
Нет, "неожиданный EOF при поиске соответствия`) '". Но я забыл добавить, что это не настоящий bash, это jailshell из дистрибутива cPanel. wapmorgan 8 лет назад 0