在Sed中插入Shell命令输出并替换现有文件行

问题描述 投票:1回答:1

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

#!/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个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.