Назад | Перейти на главную страницу

Жестко закодированный пароль против использования `cat` для извлечения из файла

Я использую Zentyal (ранее EBox) в качестве домашнего шлюза / сервера, чтобы оценить его возможность использования в местной организации. Я хотел изменить пароль root MySQL, что я и сделал, и по ошибке изменил пароль в Zentyal /var/lib/zentyal/conf папку, чтобы она соответствовала. Поэтому я изменил пароль Zentyal обратно на тот, который был, но проблема в том, что когда я редактировал этот файл, используя nano он должен был добавить символ новой строки или что-то в этом роде, потому что теперь сценарий Perl, который извлекает пароль (который использует cat чтобы получить его из файла) вызывает ошибку отказа в доступе MySQL. Но когда я жестко кодирую пароль в функции Perl db connect, он работает как шарм.

я пробовал nano -L для редактирования файла, а также echo > для вывода пароля в файл, и ни с одним не повезло. Что вызывает проблему, когда сценарий Perl выполняет cat получить пароль?

Почему вы просто не используете встроенные в Perl возможности ввода-вывода для чтения файла?

open FH, "/path/to/password.txt";
chomp(my $passwd = <FH>);

В chomp здесь отказаться от новой строки в конце строки.

Что вызывает проблему, когда Perl-скрипт пытается получить пароль от кошки?

Вы пробовали просто распечатать пароль, который вы прочитали из файла? Что-то вроде:

print ":", $passwd, ":\n";

Двоеточия есть, поэтому вы можете обнаружить любые посторонние пробелы (новые строки и т. Д.). Вы также можете использовать xxd (который у вас будет, если vim установлен в вашей системе) или od -a для просмотра всех байтов в файле. Например, учитывая файл, содержащий "secret\n", od -a покажет:

$ od -a file
0000000   s   e   c   r   e   t  nl
0000007

Я пробовал nano -L для редактирования файла, а также echo>, чтобы добавить пароль к файлу,

Я не знаю nano, но echo добавит новую строку в конец вывода. Если вы этого не хотите:

echo -n password > file

В -n подавляет завершающую новую строку.