在 Sed 中插入 Shell 命令输出并替换现有文件行
Insert Shell Command Output in Sed and replace existing file line
我正在尝试创建一个 shell 脚本,它需要 运行 在新 VPS 启动时创建。新 VPS 将使用预先安装在 CentOS 7 64 位模板上的 cPanel/WHM 面板创建。 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 }')"
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 }'
示例输出
bbb.bbb.bbb.bbb/32
只需要复制 bbb.bbb.bbb.bbb
并通过删除现有
插入到 /etc/wwwacct.conf
文件中
ADDR 127.0.0.1
使用新IP
ADDR bbb.bbb.bbb.bbb
保存现有文件并重新启动 cpanel 服务。
对于您的 ip 更改,您可以使用 cut :
ip addr show | grep 'venet0:1' | awk '{ print }' | cut -d'/' -f1
并且您的 sed 应该使用双引号使 shell 扩展 $ipchange 变量:
sed -i -e "s/ADDR 127.0.0.1/ADDR $ipchange/g" /etc/wwwacct.conf
我正在尝试创建一个 shell 脚本,它需要 运行 在新 VPS 启动时创建。新 VPS 将使用预先安装在 CentOS 7 64 位模板上的 cPanel/WHM 面板创建。 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 }')"
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 }'
示例输出
bbb.bbb.bbb.bbb/32
只需要复制 bbb.bbb.bbb.bbb
并通过删除现有
/etc/wwwacct.conf
文件中
ADDR 127.0.0.1
使用新IP
ADDR bbb.bbb.bbb.bbb
保存现有文件并重新启动 cpanel 服务。
对于您的 ip 更改,您可以使用 cut :
ip addr show | grep 'venet0:1' | awk '{ print }' | cut -d'/' -f1
并且您的 sed 应该使用双引号使 shell 扩展 $ipchange 变量:
sed -i -e "s/ADDR 127.0.0.1/ADDR $ipchange/g" /etc/wwwacct.conf