我正在努力打击Poodle SSL Bug,并且我必须更改很多配置文件。
我试图通过单行命令来保存自己的一些工作。因此,我需要修改 - 例如 - /etc/lighttpd/lighttpd.conf。
我正在寻找ssl.engine =“enable”
我想在下面添加两个新行:找到字符串:
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
答案 0 :(得分:1)
只需打印每一行,如果一行包含正则表达式,则打印您想要的任何内容:
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
答案 1 :(得分:0)
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