Perl

硬編碼密碼與使用cat從文件中檢索

  • August 6, 2013

我使用 Zentyal(以前的 EBox)作為我的家庭網關/伺服器,以評估它是否可以在本地組織中使用。我想更改根 MySQL 密碼,我這樣做了,並錯誤地更改了 Zentyal/var/lib/zentyal/conf文件夾中的密碼以匹配它。所以我將 Zentyal 密碼改回原來的樣子,但問題是,當我使用它編輯該文件時,nano它必須添加一個換行符或其他東西,因為現在檢索密碼的 Perl 腳本(用於cat從文件)導致 MySQL 訪問被拒絕錯誤。然而,當我在 Perl db 連接函式中硬編碼密碼時,它就像一個魅力。

我試圖nano -L編輯文件,以及echo >將密碼輸出到文件,但都沒有運氣。當 Perl 腳本執行 acat來獲取密碼時,導致問題的原因是什麼?

為什麼不直接使用 perl 的本地 i/o 功能來讀取文件?

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

這裡chomp丟棄字元串末尾的換行符。

當 Perl 腳本執行 cat 獲取密碼時,導致問題的原因是什麼?

您是否嘗試過列印出您從文件中讀取的密碼?就像是:

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抑制尾隨換行符。

引用自:https://serverfault.com/questions/528900