我正在使用shell脚本来自动执行某些服务器任务。我需要做的主要事情之一是配置。
我正在尝试快速找到从一个来源提取数据然后替换另一个来源的数据的方法。简而言之,我要做的是将my.cnf中的IP地址替换为ifconfig中的IP地址。我想要更改的IP地址是绑定地址。
以下是我想要做的一个例子:
一个。使用ifconfig - 获取网络信息(包括IP地址)。
B中。使用该输出,使用正则表达式仅提取IP地址
℃。使用IP地址替换my.cnf
中的绑定地址值我不熟悉管道和重定向。我很确定我可能要输出到变量,然后在另一个命令中使用该变量来完成操作?使用perl会更容易吗?
修改
以下是执行此操作的代码:
ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1` ; sed -i "s/\(bind-address[\t ]*\)=.*/\1= $ip/" /etc/mysql/my.cnf
非常感谢Jaidev Sridhar的指导。
答案 0 :(得分:1)
$ ip=`ifconfig eth0 | grep "inet addr"| cut -d ":" -f2 | cut -d " " -f1`; sed -i "s/MYIP=.*/MYIP=$ip/g" foo.cnf
假设:
答案 1 :(得分:0)
您可以使用awk / cut / sed从ifconfig输出中提取IP地址。
并使用sed -i更新my.cnf
答案 2 :(得分:0)
没有削减和ip变量不会污染。
ip="`ifconfig eth0 | sed 's/.*inet addr:\([0-9\.]*\).*/\1/p'`" sed -i "s/^\(bind_address\)=.*/\1=$ip/" /etc/my.cnf