Хинду DNS и конфигурация прокси

тщательно продумано, когда каждая команда выполняется, где она работает, и какой вход он получает.

  1. Первый здесь документ расширяется. Это означает, что хвост / AWK труба выполняется на локальном хосте, а также переменная замена $ A .
  2. Затем выполняется команда SSH . Он получает расширенный здесь документ; Это команды, которые выполняются в удаленной оболочке.
  3. Удаленная оболочка выполняется без аргументов, поэтому он читает команды для выполнения из стандартного ввода. Эти команды включают Sudo , но, возможно, (в зависимости от оболочки) также некоторые из следующих строк.
  4. Удаленная оболочка выполняется Sudo SU - uvereotheruser . Это запускает оболочку как COMEROUSER , который сначала читает и выполняет, что пользователь .profile , затем читает команды со своего стандартного ввода. Стандартный вход содержит все, что первая удаленная оболочка не прочитала, что несколько непредсказуемо (это зависит от оболочки и насколько это произошло, чтобы прочитать от входной трубы).
  5. Оболочка работает как , uverotheruser работает над командами, которые она читала, если таковая имеется.
  6. Оболочка работает как , как-то , выполняет команду , если , если она его прочитана).

Чтобы избежать здесь расширения документов, используйте цитаты вокруг маркера Heredoc. Чтобы избежать нечестивой смеси стандартных входов, используйте SH -C ... или быть явным относительно того, что вторая удаленная оболочка получает в качестве его ввода.

ssh  -t user@hostname <<'SSH_EOF'
sudo su - someotheruser <<'SU_EOF'
a=`tail -10 /somepath/application.log | awk '/Agent Exited/ { print $3 }'`
if [ "$a" -eq 0 ] 
then
echo "Success"
else
echo "Failure"
fi
SU_EOF
SSH_EOF

Вам действительно нужно источник uvereotheruser .profile ? Если нет, используйте sudo -u uverotheruser . Если вы сделаете, используйте sudo -I -U uverotheruser . Определить ваши судюры правило соответственно.

Чтение файла журнала - это единственное, что требует повышенных привилегий, поэтому он имеет смысл, чтобы запустить только команду хвоста как CommoreUser .

ssh -t user@hostname <<'SSH_EOF'
a=`sudo -u someotheruser tail -10 /somepath/application.log | awk '/Agent Exited/ { print $3 }'`
if [ "$a" -eq 0 ] 
then
echo "Success"
else
echo "Failure"
fi
SSH_EOF

Вы сделаете вашу жизнь намного легче, если вы не смешиваете методы эскалации привилегии. Вместо использования sudo , чтобы переключиться из , как-то - , используйте SSH для localhost. Сторирование двух команд SSH легко. Настройте ключ - вы можете даже настроить ключ, который позволяет запустить определенную команду, такую ​​как хвост -10 / SomePath/application.log. Определите псевдоним в вашем .ssh / Config в SSH через emotuser Счет:

Host hostname-someotheruser
HostName hostname
UserName someotheruser
ProxyCommand ssh someuser@hostname

Тогда запустить

a=$(ssh hostname-someotheruser tail -10 /somepath/application.log |
    awk '/Agent Exited/ { print $3 }')
if [ "$a" -eq 0 ] 
then
  echo "Success"
else
  echo "Failure"
fi
0
22.01.2015, 20:04
1 ответ

Я нашел эту ссылку: http://wiki.gentoo.org/wiki/proxyautoconfig Я надеюсь, если полезно.

0
28.01.2020, 04:57

Теги

Похожие вопросы