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

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

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

1 ответ

Решение

Почему вы не используете собственные возможности ввода / вывода 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 подавляет завершающий перевод строки.

Другие вопросы по тегам