簡體   English   中英

麻煩使用sed在雙引號中查找所有字符串

[英]Trouble Using sed to find all string within double quotes

因此,我有這段代碼,可以在.php網頁中使用發布主機名,用戶名和密碼。 然后,我可以通過SSH進入我的遠程Pi,並更改textfile.txt的文本。 我現在需要的是能夠將結果顯示到我的確認網頁中。 我很難理解sed是否正確使用,但這是我到目前為止所掌握的。

這是我正在使用的testfile.txt示例:

Pi1Hostname =“ Tester1”

Pi1Username =“ ExampleUsername”

Pi1Password =“ ExamplePassword”

這是用於在主機名中輸入新字符串的工作腳本:

    $ssh1->exec('sed -i \'/Pi1Hostname /s/".*."/"'. $hostnameNew .'\"/\' testfile.txt');

這是我當前試圖用來調用pi1Hostname結果的內容:

echo '<p>Company:' . $ssh1->exec('sed -i /Pi1Hostname /\".*.\"/ testfile.txt') .'</p>';

這是我收到的錯誤消息:

sed: -e expression #1, char 12: unterminated address regex

如果有人對這個問題有任何意見,我將不勝感激。 這是我需要弄清楚的另一件事,以便為網頁獲取其他19行輸入。

看完之后,我找到了我一直在尋找的答案:

cat testfile.txt | grep -oP 'Pi1Hostname = "\K[^"]+

將sed調用添加到程序中之前,請先對其進行處理。 我用我將代碼硬編碼到另一個程序中的任何命令來執行此操作。

您的sed調用未引用帶有空格的expression參數。 這就是為什么它不起作用。

我對您還有其他想法。

您應該非常小心,以免從互聯網輸入到表單輸入中的任何數據。 精心設計的形式可能會將命令注入到您的shell中(我可能會錯過它如何組合在一起)。 還要確保它運行在https之上。 看來,您的有效負載中包含任何人都需要查看pi的內容,而不是您不希望加密的內容。 為此,它可以保護您的pi避免將其用戶名和密碼提交給網絡釣魚mitm樣式攻擊。

此外,為什么還要使用外殼? 您已經在使用php,不是嗎? 您可以使用全套常規提議編程語言功能,包括帶pcre的正則表達式(不僅僅是來自unix的簡陋標准正則表達式,我的朋友沒有冒犯性)。 讀取整個文件,在php端解析它是否更有意義?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM