sudo сопровождается другой командой в ssh heredoc не работает

Это мой сценарий:

#!/bin/sh

echo "I'm local"

ssh -t -t remote.server << 'EOF'
    sudo echo "I'm remote and sudo"
    echo "I'm remote but not sudo"
    exit
EOF

Это просто не работает, возможно, потому что линия echo "I'm not sudo" предоставляется в качестве пароля.

Как я могу заставить это работать, без:

  • ввод пароля непосредственно в скрипт
  • включение sudo без пароля, или
  • сделать все sudo?

Или, возможно, мой подход совершенно неправильный или необычный для этой цели?

1 ответ

Решение

На мой взгляд, единственный способ - это разделить на две отдельные команды ssh:

#!/bin/sh

echo "I'm local"

ssh -t remote.server "sudo echo \"I'm remote and sudo\""
ssh -t remote.server "echo \"I'm remote but not sudo\""

Перенаправление, которое вы используете, всегда будет перенаправлять весь блок в команду и не будет ждать какого-либо успеха подкоманды (или сбоя).

Другие вопросы по тегам