【问题标题】:Insert Shell Command Output in Sed and replace existing file line在 Sed 中插入 Shell 命令输出并替换现有文件行
【发布时间】:2019-07-09 14:35:45
【问题描述】:

我正在尝试创建一个 shell 脚本,该脚本需要在新创建的 VPS 启动时运行。新的 VPS 将使用预安装在 CentOS 7 64 位模板上的 cPanel/WHM 面板创建。 Shell 脚本需要更改 VPS 的 IP 地址,在创建并重新启动 cpanel 服务时为 VPS 分配新的 IP 地址。

#!/bin/bash
echo -e "\e[1;36;40m Modifying parameters in cpanel shared IP configuration \e[0m"
ipchange="$(ip addr show | grep 'venet0:0' | awk '{ print $2}')"
echo "$ipchange"
sed -i -e 's/"ADDR 127.0.0.1$"/"ADDR $ipchange"/g' /etc/wwwacct.conf
echo -e "\e[1;36;40m Restarting cPanel \e[0m"
systemctl restart cpanel.service  > /dev/null 2>&1
echo -e "\e[1;36;40m Restart cpanel completed \e[0m"

我需要知道如何插入以下命令的部分输出

ip addr show | grep 'venet0:1' | awk '{ print $2}'

示例输出

bbb.bbb.bbb.bbb/32

只需要复制bbb.bbb.bbb.bbb并通过删除现有的/etc/wwwacct.conf文件插入

ADDR 127.0.0.1

新IP

ADDR bbb.bbb.bbb.bbb

保存现有文件并重新启动 cpanel 服务。

【问题讨论】:

    标签: shell scripting cpanel vps


    【解决方案1】:

    对于您的 ip 更改,您可以使用 cut :

    ip addr show | grep 'venet0:1' | awk '{ print $2}' | cut -d'/' -f1
    

    你的 sed 应该使用双引号来使 shell 扩展 $ipchange 变量:

    sed -i -e "s/ADDR 127.0.0.1/ADDR $ipchange/g" /etc/wwwacct.conf
    

    【讨论】:

    • @GAD3R 我的回答是基于提到示例输出bbb.bbb.bbb.bbb/32 的OP。我不知道他在他的机器上使用ip addr show | grep 'venet0:1' | awk '{ print $2}' 实际获得了什么
    猜你喜欢
    • 1970-01-01
    • 2019-08-18
    • 2020-05-06
    • 2013-09-25
    • 1970-01-01
    • 2020-12-07
    • 2014-06-13
    • 2015-05-09
    • 1970-01-01
    相关资源
    最近更新 更多