我正在嘗試自動設定/etc/ssh/sshd_config
檔中的某些參數,最值得注意的是
#PermitRootLogin yes
和
#LoginGraceTime 2m
他們應該閱讀:
PermitRootLogin no
LoginGraceTime 60
我不是腳本高手,所以請耐心等待......
我嘗試sed -e 's/#LoginGraceTime 2m/LoginGraceTime 60/' /etc/ssh/sshd_config
開始滾動,但得到了一個奇怪的結果。它只是簡單地顯示了我正在嘗試處理的文件...
有人可以直接讓我使用 sed 嗎?
答案1
將輸出重定向到臨時文件,然後將臨時文件重新命名為原始文件
sed -e 's/#LoginGraceTime 2m/LoginGraceTime 60/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp && mv -f /etc/ssh/sshd_config.tmp /etc/ssh/sshd_config
或者,如果您有 GNU,sed
您可以使用-i
就地編輯選項
sed -i -e 's/#LoginGraceTime 2m/LoginGraceTime 60/' /etc/ssh/sshd_config
答案2
與@Bodo的答案類似,但此解決方案保持原始行不變,並將修改後的版本添加到原始行下方。只有當您想保留原始行作為註釋時,這才有意義。
sed -i'' -n 'p;s/#\(LoginGraceTime\) 2m/\1 60/p;s/#\(PermitRootLogin\) yes/\1 no/p' /etc/ssh/sshd_config
這裡我們使用一個捕獲組\(...\)
,它在替換中被替換\1
(因為我們懶得再次輸入相同的字串)。
帶有選項的 sed-n
僅輸出明確列印的行,因此第一個p
命令用於列印未修改的行,接下來的兩個命令用於列印修改的行。