屏蔽主机名到Linux / Bash / Perl中的IP地址查找

时间:2011-04-14 00:11:32

标签: linux perl bash rhel5

我们环境中的许多服务器都在 /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

4 个答案:

答案 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; }