我们环境中的许多服务器都在 /etc/hosts
中配置了环回线,如下所示:
127.0.0.1 mydevserver.testdomain.com mydevserver localhost.localdomain localhost
通常情况下,这不是问题。但是,我们现在正在处理来自调用gethostbyaddr的供应商的一些外部软件,如果 hostname --ip-address
的结果是127.0.0.1,则他们的安装程序会失败。这当然会导致它在我们的系统上失败,因为服务器主机名在/etc/hosts
的环回行中。
我的问题是,如果我用bash或perl脚本包装安装程序,是否有办法来掩盖"或者暂时改变 hostname --ip-address
的结果而不更改/ etc / hosts文件?
(澄清:他们在编译的二进制安装程序中调用gethostbyaddr()函数。从命令行获取类似结果的方法是hostname --ip-address
)
答案 0 :(得分:4)
一种方法可能是编写自己的gethostbyaddr()
函数,将其编译成库(比如libmyfunc.so
),然后preload it in a wrapper script,以便供应商的安装程序使用它而不是系统{ {1}}:
gethostbyaddr()
答案 1 :(得分:1)
编写自己的hostname
实现,执行预期的操作,将其置于某处,在$PATH
之前取消该目录。
答案 2 :(得分:1)
如果确实调用了hostname命令,那么没有什么比这更容易了:只需用你自己的版本替换它。
答案 3 :(得分:0)
如果它是一个简单的BASH脚本,请在调用“hostname”之前添加它:
function hostname(){ echo -n; }