我正试图与Poodle SSL Bug作斗争,我必须更改许多配置文件。
我试着为自己节省一些工作,并通过单行命令来完成。因此,我需要修改(例如)/etc/lighttpd/lighttpd.conf.
我正在寻找ssl.engine="启用"
我想在找到字符串的下面添加两行:
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
最终结果应为:
$SERVER["socket"] == "0.0.0.0:80" {
ssl.engine = "enable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
ssl.pemfile = "/etc/ssl/cert.pem"
ssl.ca-file = "/etc/ssl/cert.bundle"
}
我试过AWK,但由于空间和车厢返程的原因,我无法让它发挥作用。
很高兴看到一些俏皮话:)
以下是我尝试过的(这里肯定做错了什么):
awk '{a[NR]=$0}/ssl.engine/{a[NR+1]=a[NR+1]"ssl.use-sslv2 = "disable""}{a[NR+2]"ssl.use-sslv3 = "disable""}END{for(i=1;i<=NR;i++)print a[i]}' /etc/lighttpd/lighttpd.conf
只需打印每一行,如果一行包含regexp,则打印您想要的任何内容:
awk '{print} /ssl.engine = "enable"/{ print "ssl.use-sslv2 = "disable"nssl.use-sslv3 = "disable"" }' file
请注意"。"是RE元字符,因此需要在RE上下文中对其进行转义。
如果你想修改原始文件,那么用GNU awk:
awk -i inplace '...' file
以及任何awk或任何其他UNIX工具:
awk '...' file > tmp && mv tmp file
明确:
awk -i inplace '{print} /ssl.engine = "enable"/{ print "ssl.use-sslv2 = "disable"nssl.use-sslv3 = "disable"" }' file
awk '{print} /ssl.engine = "enable"/{ print "ssl.use-sslv2 = "disable"nssl.use-sslv3 = "disable"" }' file > tmp && mv tmp file
sed
怎么样?
sed 's/ssl.engine = "enable"/ssl.engine = "enable"nssl.use-sslv2 = "disable"nssl.use-sslv3 = "disable"/' config
使用sed -i
替换到位:
sed -i 's/ssl.engine = "enable"/ssl.engine = "enable"nssl.use-sslv2 = "disable"nssl.use-sslv3 = "disable"/' config