我使用Zentyal(以前的EBox)作为我的家庭网关/服务器,评估它可能在本地组织中使用。 我想更改root密码,我做了,并错误地更改了Zentyal /var/lib/zentyal/conf文件夹中的密码以匹配它。 所以我把Zentyal的密码改回原来的样子,但问题是,当我使用nano编辑这个文件时,它必须添加一个换行符或者什么,因为现在是检索密码的Perl脚本(它使用cat来检索它从文件)导致一个MySQL访问被拒绝的错误。 然而,当我在Perl数据库连接函数中对密码进行硬编码时,它就像一个魅力。
我已经尝试nano -L编辑文件,以及echo >输出密码到文件,并没有运气。 什么是Perl脚本做cat来获取密码的问题?
为什么不使用perl的本地I / Ofunction来读取文件?
open FH, "/path/to/password.txt"; chomp(my $passwd = <FH>);
这里的chomp在string的末尾丢弃一个换行符。
什么是Perl脚本做猫来获取密码的问题?
你试过打印出你从文件中读取的密码吗? 就像是:
print ":", $passwd, ":\n";
冒号在那里,所以你可以发现任何无关的空白(换行符等)。 你也可以使用xxd (如果你的系统上安装了vim ,你将会得到)或od -a来查看文件中的所有字节。 例如,给定一个包含“ secret\n ”的文件, od -a会显示:
$ od -a file 0000000 secret nl 0000007
我已经尝试nano -L编辑文件以及echo>将密码添加到文件,
我不知道nano ,但echo将添加一个换行符到它的输出结束。 如果你不想这样做:
echo -n password > file
-n抑制尾随的换行符。