0

我想使用详细选项执行 Ant,但我不希望传递给Exec任务的参数在敏感的情况下显示(即用户/密码)。

一个示例是与数据库的连接:

<exec executable="/bin/sh" failonerror="true">
    <arg line="/opt/blah/blah/bin/frmcmp_batch.sh Module=blah Userid=username/mypassword@blah Module_Type=blah"/>
</exec>

我不希望参数(特别是“Userid=username/mypassword@blah”出现在日志中)。

隐藏/保护论点的最佳方法是什么?

4

2 回答 2

1

保护密码的最佳方法是不使用一个 :-) 以下答案描述了如何设置 SSH 密钥:

ANT sshexec命令支持“keyfile”属性。

更新

啊,脚本 sudo 可能是一种皇家痛苦。

以下是过去对我有用的解决方案。

  1. 将用户配置为不需要密码。请参阅“sudoers”文件。在我们的设置中,我们将此特殊访问权限授予管理员用户组中的用户。(请参阅Ant build.xml 需要用户输入,但 Eclipse 没有 tty
  2. 使用 SSH :-) 登录到本地机器是自动化进程的一种非常有效的方式。使我们能够使用 SSH 密钥来控制访问并可以限制用户运行的命令(通过 authorized_keys 文件的鲜为人知的功能)
  3. 使用像rundeck这样的自动化工具。它对内置的 sudo 提供了有用的支持。密码可以配置为在运行时 (GUI) 指定但不保存在任何地方的选项。有一个命令行和 REST API 可用于调用作业。这个解决方案可能是最没用的,但我提到它是因为它是一个非常有用的自动化操作任务的工具。

您似乎担心出现在日志文件中的密码?我的固定是永远不要写下我的密码或在脚本中硬编码它......

于 2013-04-09T18:29:00.847 回答
0

目前我正在使用以下解决方法(在此处描述)来隐藏“mypassword”,但我想知道是否有更优雅的解决方案?

构建.xml

<?xml version="1.0" encoding="UTF-8"?>
<project default="test">

    <target name="test" depends="">
        <echo message="Testing..."/>

        <echo message="Turning verbose off... you should NOT see the arguments..."/>

        <script language="javascript">
            var logger = project.getBuildListeners().firstElement();
            // 2 works to turn off verbose
            logger.setMessageOutputLevel(2);
        </script>

        <exec dir="." executable="cmd">
            <arg line="/c dummy.bat mypassword"/>
        </exec>

        <echo message="Turning verbose on... you should see the arguments..."/>

        <script language="javascript">
            var logger = project.getBuildListeners().firstElement();
            // 3 works to turn verbose back on
            logger.setMessageOutputLevel(3);
        </script>

        <exec dir="." executable="cmd">
            <arg line="/c dummy.bat mypassword"/>
        </exec>

    </target>
</project>

假人.bat

@echo off
echo dummy

输出

test:
     [echo] Testing...
     [echo] Turning verbose off... you should NOT see the arguments...
     [exec] dummy
     [echo] Turning verbose on... you should see the arguments...
     [exec] Current OS is Windows XP
     [exec] Executing 'cmd' with arguments:
     [exec] '/c'
     [exec] 'dummy.bat'
     [exec] 'mypassword'
     [exec]
     [exec] The ' characters around the executable and arguments are
     [exec] not part of the command.
     [exec] dummy
于 2013-04-09T15:43:40.037 回答