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\""
Перенаправление, которое вы используете, всегда будет перенаправлять весь блок в команду и не будет ждать какого-либо успеха подкоманды (или сбоя).