Это мой сценарий:
#!/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"
предоставляется как пароль.
Как заставить его работать без:
Или, может быть, мой подход совершенно неправильный или необычный для этой цели?
На мой взгляд, единственный способ - разделить на две отдельные команды 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\""
Перенаправление, которое вы используете, всегда будет перенаправлять на команду весь блок и не будет ждать успеха (или неудачи) какой-либо подкоманды.