【问题标题】:SED pattern matchingSED 模式匹配
【发布时间】:2022-01-12 20:04:21
【问题描述】:

我正在尝试使用 sed 修改 NGINX 配置文件。我想替换 ssl_certificate 和 ssl_certificate_key 的值

config="/etc/nginx/httpd.conf"
certfile="server.pem"
keyfile="key.pem"

sed -i -e "s/\(ssl_certificate *\/etc\/pki\/nginx\/\).*/\1$certfile/" $config
sed -i -e "s/\(ssl_certificate_key *\/etc\/pki\/nginx\/private\/\).*/\1$keyfile/" $config

我要修改的起始行看起来像这样

ssl_certificate /etc/pki/nginx/selfsigned.crt;
ssl_certificate_key /etc/pki/nginx/private/selfsigned.key;
ssl_dhparam /etc/pki/nginx/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

我结束了

ssl_certificate /etc/pki/nginx/server.pem
ssl_certificate_key /etc/pki/nginx/server.pem
ssl_dhparam /etc/pki/nginx/server.pem
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

我想要实现的是将 selfsigned.crt 替换为 server.pemselfsigned.key 替换为 key。 pem 实现

ssl_certificate /etc/pki/nginx/server.pem
ssl_certificate_key /etc/pki/nginx/key.pem
ssl_dhparam /etc/pki/nginx/dhparam.pem
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

请指教。 TIA

【问题讨论】:

  • 你最终得到了不同的 ssl_certificate 和 ssl_certificate_key 值,所以看起来你已经实现了你的目标。
  • 变量$ssl_certificate的值是多少?我怀疑您需要省略 $ 并使用文字字符串 ssl_certificate
  • 我刚刚意识到我打错了——不是 $ssl_certificate 而是 ssl_certificate。模式中没有变量,只有裸文本。

标签: regex sed


【解决方案1】:

使用sed

$ sed "/certificate/s|\(.*/\).*\(.$\)|\1$certfile\2|" input_file
ssl_certificate /etc/pki/nginx/server.pem;
ssl_certificate_key /etc/pki/nginx/private/server.pem;
ssl_dhparam /etc/pki/nginx/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

将行与certificate 匹配并在这些行上执行替换。

【讨论】:

    【解决方案2】:

    我明白了:

    cat /etc/nginx/httpd.conf | sed -e "s/\(ssl_certificate *\/etc\/pki\/nginx\/\).*/\1$certfile/" -e "s/\(ssl_certificate_key *\/etc\/pki\/nginx\/private\/\).*/\1$keyfile/"
    
    server {
        listen 443 default_server ssl;
        server_name _;
        root /usr/share/nginx/html;
    
    
        ssl_certificate /etc/pki/nginx/server.pem
        ssl_certificate_key /etc/pki/nginx/private/key.pem
        ssl_dhparam /etc/pki/nginx/dhparam.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 2021-05-23
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 2020-08-04
      • 2022-01-13
      相关资源
      最近更新 更多