Как другие упомянули, если они общедоступны и не требуют проходящих проверку подлинности пользователей против каталога, то не помещайте их в домен.
Однако, если Вы требуете своего рода аутентификации или поиска информации от AD, возможно изучаете рабочий Режим приложения Active Directory (ADAM) в демилитаризованной зоне. Вы, возможно, должны копировать relavent информацию от AD в Раздел Applicaton, поскольку ADAM не синхронизирует стандартные AD разделы.
Если Вы просто ищете функции управления, хотя, ADAM не применяется.
command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
Я сделал сценарий обертки, который реализует ответ Balázs Pozsár в чистом ударе. Сохраните его в своем $PATH и командах префикса к colorize их вывод.
#!/bin/bash if [ $1 == "--help" ] ; then echo "Executes a command and colorizes all errors occured" echo "Example: `basename ${0}` wget ..." echo "(c) o_O Tync, ICQ# 1227-700, Enjoy!" exit 0 fi # Temp file to catch all errors TMP_ERRS=$(mktemp) # Execute command "$@" 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" | tee --append $TMP_ERRS; done) EXIT_CODE=$? # Display all errors again if [ -s "$TMP_ERRS" ] ; then echo -e "\n\n\n\e[01;31m === ERRORS === \e[0m" cat $TMP_ERRS fi rm -f $TMP_ERRS # Finish exit $EXIT_CODE
Можно использовать функцию как это
#!/bin/sh
color() {
printf '\033[%sm%s\033[m\n' "$@"
# usage color "31;5" "string"
# 0 default
# 5 blink, 1 strong, 4 underlined
# fg: 31 red, 32 green, 33 yellow, 34 blue, 35 purple, 36 cyan, 37 white
# bg: 40 black, 41 red, 44 blue, 45 purple
}
string="Hello world!"
color '31;1' "$string" >&2
Я добавляю> &2 для печати к stderr
У меня есть немного измененная версия скрипта O_o Tync. Мне нужно было сделать эти моды для OS X Lion, и это не идеально, потому что скрипт иногда завершается раньше, чем завернутая команда. Я добавил режим сна, но уверен, что есть способ получше.
#!/bin/bash
if [ $1 == "--help" ] ; then
echo "Executes a command and colorizes all errors occured"
echo "Example: `basename ${0}` wget ..."
echo "(c) o_O Tync, ICQ# 1227-700, Enjoy!"
exit 0
fi
# Temp file to catch all errors
TMP_ERRS=`mktemp /tmp/temperr.XXXXXX` || exit 1
# Execute command
"$@" 2> >(while read line; do echo -e "$(tput setaf 1)$line\n" | tee -a $TMP_ERRS; done)
EXIT_CODE=$?
sleep 1
# Display all errors again
if [ -s "$TMP_ERRS" ] ; then
echo -e "\n\n\n$(tput setaf 1) === ERRORS === "
cat $TMP_ERRS
else
echo "No errors collected in $TMP_ERRS"
fi
rm -f $TMP_ERRS
# Finish
exit $EXIT_CODE
Метод 1: Используйте подстановку процесса:
command 2> >(sed $'s,.*,\e[31m&\e[m,'>&2)
Метод 2: Создайте функцию в сценарии bash:
color()(set -o pipefail;"$@" 2>&1>&3|sed $'s,.*,\e[31m&\e[m,'>&2)3>&1
Используйте это так:
$ color command
Оба метода покажут stderr
команды красным цветом.
Продолжайте читать, чтобы узнать, как работает метод 2. Эта команда демонстрирует некоторые интересные особенности.
color () ...
- Создает функцию bash с именем color. set -o pipefail
- Это параметр оболочки, который сохраняет код возврата ошибки команды, вывод которой передается другой команде. Это выполняется в подоболочке, которая создается круглыми скобками, чтобы не изменять параметр pipefail во внешней оболочке. " $ @"
- Выполняет аргументы функции как новую команду. " $ @*
- соответствует всей строке. \ e [31m
- escape-последовательность ANSI, из-за которой следующие символы становятся красными &
- sed
replace символ, который расширяется до всей совпавшей строки (в данном случае до всей строки). \ e [m
- Управляющая последовательность ANSI, сбрасывающая цвет. > & 2
- Сокращение для ] 1> & 2
, это перенаправляет sed
stdout
на stderr
. 3> & 1
- Перенаправляет дескриптор временного файла 3
обратно в stdout
. Способ bash сделать stderr постоянно красным - это использование exec для перенаправления потоков. Добавьте в свой bashrc следующее:
exec 9>&2
exec 8> >(
while IFS='' read -r line || [ -n "$line" ]; do
echo -e "\033[31m${line}\033[0m"
done
)
function undirect(){ exec 2>&9; }
function redirect(){ exec 2>&8; }
trap "redirect;" DEBUG
PROMPT_COMMAND='undirect;'
Я уже писал об этом ранее: Как установить цвет шрифта для STDOUT и STDERR
Это решение сработало для меня: https://superuser.com/questions/28869/immediately-tell-which-output-was-sent-to-stderr
I Я поместил эту функцию в мой .bashrc
или .zshrc
:
# Red STDERR
# rse <command string>
function rse()
{
# We need to wrap each phrase of the command in quotes to preserve arguments that contain whitespace
# Execute the command, swap STDOUT and STDERR, colour STDOUT, swap back
((eval $(for phrase in "$@"; do echo -n "'$phrase' "; done)) 3>&1 1>&2 2>&3 | sed -e "s/^\(.*\)$/$(echo -en \\033)[31;1m\1$(echo -en \\033)[0m/") 3>&1 1>&2 2>&3
}
Тогда, например:
$ rse cat non_existing_file.txt
даст мне красный вывод.