Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Ant获得完全限定的主机名_Ant - Fatal编程技术网

如何使用Ant获得完全限定的主机名

如何使用Ant获得完全限定的主机名,ant,Ant,我使用Ant作为服务器的安装脚本,我们需要获得服务器的完全限定名称。如何使用Ant获得它,或者在Ant中是可能的 完全限定的主机名类似于:xxx.company.com有一个名为Ant的任务,您可以使用它设置包含当前计算机的主机名和域的属性 或者,如果您在Linux/Unix上运行,您可以调用hostname命令: <exec executable="hostname" outputproperty="myhostname"> <arg line="-f"/> <

我使用Ant作为服务器的安装脚本,我们需要获得服务器的完全限定名称。如何使用Ant获得它,或者在Ant中是可能的


完全限定的主机名类似于:xxx.company.com

有一个名为Ant的任务,您可以使用它设置包含当前计算机的主机名和域的属性

或者,如果您在Linux/Unix上运行,您可以调用
hostname
命令:

<exec executable="hostname" outputproperty="myhostname">
  <arg line="-f"/>
</exec>
这可以按如下方式使用:

<GetHost property="myhostname" />

重新审视我的回答:-)

使用嵌入式groovy脚本执行Java主机名查找:

       <groovy>
            properties["hostname"] = InetAddress.getLocalHost().getHostName()
        </groovy>
编译文件

这是一个演示项目,回答了以下stackoverflow问题:
https://stackoverflow.com/questions/14653733
首先安装第三方依赖项
蚂蚁引导
然后运行构建
蚂蚁
预期以下输出
打印主机名:
[echo]主机名:?????
属性[“主机名”]=InetAddress.getLocalHost().getHostName()

另一种方法是编写javascriptscriptdef,在属性中设置此信息

<scriptdef name="get-hostame" language="javascript">
    <attribute name="prefix" /> <![CDATA[
        importClass(java.net.InetAddress);
        address = InetAddress.getLocalHost();
        prefix = attributes.get("prefix");
        project.setNewProperty(prefix + ".hostname", address.getHostName());
        project.setNewProperty(prefix + ".fqdn", address.getCanonicalHostName());
        project.setNewProperty(prefix + ".address", address.getHostAddress());
    ]]>
</scriptdef>
这是基于我在这里找到的一些建议: 使用环境

<property name="hostname" value="${env.COMPUTERNAME}"/>

使用内置的javascript

<script language="javascript">//<![CDATA[
    project.setProperty("hostname", Packages.java.net.InetAddress.getLocalHost().getHostName());
    project.setProperty("hostname-full", Packages.java.net.InetAddress.getLocalHost().getCanonicalHostName());
//]]></script>
<echo message="hostname=${hostname}"/>
<echo message="hostname-full=${hostname-full}"/>
//

我想要一款可以在所有平台上运行的产品。hostinfo也是为set而不是为get而设置的,是吗?@performanceuser
hostinfo
使用它获得的值设置属性。然而,刚刚尝试过,它似乎没有我想象的那么有用。如果不指定主机,则默认为本地主机,但不是获取实际主机名,而是将
host
设置为
localhost
,将
DOMAIN
设置为
localdomain
。我没有包括的第三个选项是创建自己的自定义任务,该任务调用
InetAddress.getLocalHost().getHostName()
。这需要更多的工作,但将是跨平台的(可能其他人已经创建了这样一个任务)。我发现使用
不同。对于后一个,我得到了有用的信息,第一个总是
主机。NAME=localhost
参见
<exec executable="hostname" outputproperty="computer.hostname"/>
<groovy>
properties.'hostname' = "hostname".execute().text
//or
properties.'hostname' = InetAddress.getLocalHost().getHostName()

properties.'hostnamefull' = "nslookup ${"hostname".execute().text}".execute().text.find(/Name:\s(.+)/).split(/:\s+/)[1]
</groovy>

<echo>
$${hostname} => ${hostname}
$${hostnamefull} => ${hostnamefull}
</echo>
<scriptdef name="get-hostame" language="javascript">
    <attribute name="prefix" /> <![CDATA[
        importClass(java.net.InetAddress);
        address = InetAddress.getLocalHost();
        prefix = attributes.get("prefix");
        project.setNewProperty(prefix + ".hostname", address.getHostName());
        project.setNewProperty(prefix + ".fqdn", address.getCanonicalHostName());
        project.setNewProperty(prefix + ".address", address.getHostAddress());
    ]]>
</scriptdef>
<get-hostame prefix="uwi.host" />
[echoproperties] uwi.host.address=10.666.666.666
[echoproperties] uwi.host.fqdn=myhost.stackoverflow.com
[echoproperties] uwi.host.hostname=myhos
<property name="hostname" value="${env.COMPUTERNAME}"/>
<script language="javascript">//<![CDATA[
    project.setProperty("hostname", Packages.java.net.InetAddress.getLocalHost().getHostName());
    project.setProperty("hostname-full", Packages.java.net.InetAddress.getLocalHost().getCanonicalHostName());
//]]></script>
<echo message="hostname=${hostname}"/>
<echo message="hostname-full=${hostname-full}"/>