我正在尝试在将放置在多台计算机上的脚本中设置IP地址。我使用setup.py将脚本打包在RPM中(使用脚本作为入口点),并使用yum在这些机器上安装RPM。我希望IP地址变量基于RPM安装的机器。
其他系统可能会从安装位置提取脚本,但我需要将IP地址保留为安装RPM的计算机。
如果这没有意义,我会尝试列出步骤:
my_script
有ipaddress
变量需要设置为
机器安装在my_script
打包在my.rpm
my.rpm
使用yum安装在计算机A上导致my_script
放置为/usr/bin/my_script
(此时my_script
应该将IP地址直接写入my_script
并存储
在ipaddress
在安装期间有没有办法在脚本中设置变量?
我不必使用setup.py,如果需要,我可以切换到使用makefile / spec文件设置来构建RPM。
答案 0 :(得分:0)
在脚本中对变量进行硬编码是不好的做法。您应该将其存储在config中,脚本应该解析配置。
然后你会在spec文件中找到:
Requires(post): gawk
Requires(post): iproute
%install
mkdir -p %{buildroot}%{_sysconfdir}/yourconfig
touch %{buildroot}%{_sysconfdir}/yourconfig
%post
ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print "IP="$2}' | cut -f1 -d'/' > /etc/yourconfig
%files
%config(noreplace) %{_sysconfdir}/yourconfig
答案 1 :(得分:0)
您可能希望将其作为以某种方式解析ip addr list
输出的脚本,而不是将其存储在文件中。然后你可以拥有你的智能"在一个地方,如果由于某种原因IP发生变化,您将无需重新安装RPM。
另一个优点是您可以继续为其添加智能,例如你可能想要过滤掉VM接口,home,unroutables等。