Ant Build-Script, как проверить права root - PullRequest
1 голос
/ 14 июня 2011

Как проверить права root с помощью скрипта Ant?Я попытался сделать это с помощью шеллскрипта, например

<shellscript shell="bash">
    if [[ `whoami` != 'root' ]]; then
        echo "You need to be root to install ooplss";
        exit 1
    fi
</shellscript>

Но это не остановит выполнение скрипта.

Есть еще идеи?

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

Задача shellscript является расширением задачи exec .Вы должны иметь возможность указать failonerror, чтобы сбой процесса сборки при сбое скрипта:

failonerror: остановите процесс сборки, если команда завершается с ошибкой, сигнализирующей о коде возврата.По умолчанию установлено значение false.

<shellscript shell="bash" failonerror="true">
    if [[ `whoami` != 'root' ]]; then
        echo "You need to be root to install ooplss";
        exit 1
    fi
</shellscript>

Однако следует иметь возможность обойтись без сценария оболочки;следующее не проверено:

<fail message="You need to be root to install ooplss">
 <condition>
   <not>
     <equals arg1="root" arg2="${user.name}"/>
   </not>
 </condition>
</fail>
0 голосов
/ 14 июня 2011

прямой подход с Муравьиным плагином Flaka =

<project xmlns:fl="antlib:it.haefelinger.flaka">
  <fl:when test=" '${user.name}'.toupper eq 'ROOT' ">
    <!-- your tasks go here.. -->
  </fl:when>
</project>
0 голосов
/ 14 июня 2011

Вы можете проверить свойство java user.name:

<target name="checkroot">
  <condition property="isroot">
    <equals arg1="${os.user}" arg2="root"/>
  </condition>
</target>
<target name="dostuff" depends="checkroot" unless="isroot">
...
</target>

Начиная с версии 1.7, вы также можете использовать <scriptcondition>, чтобы сделать что-то умное в сценарии вместо <equals> выше

...