Я использую 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
подавляет завершающую новую строку.