LINUX.ORG.RU

Подскажите по sshpass

 ,


0

1

Задача запускать локальный фаил на сервере через sshpass

так работает

sshpass -p $pass ssh -o StrictHostKeyChecking=no $login@ip 'bash -s' < script.sh 
необходимо запускать фаил script.sh с рут правами пробовал через EOF передать рут пасс, не получилось
sshpass -p $pass ssh -o StrictHostKeyChecking=no $login@ip 'bash -s' < script.sh << "EOF"
    echo $pass &> /dev/null
EOF


Ответ на: комментарий от vbox

Ну вообще я не придумал, как сделать, чтобы оно не работало

$ pass=q1; sshpass -p $pass ssh root@XXX "pass=$pass bash -s" < script.sh
Password >>q1<<

в script.sh

echo "Password >>${pass}<<"

Выполняется точно на удаленном хосте, пробовал перенаправление в файл, все записалось

CaHbl4
()

И <, и << перенаправляют файловый дескриптор 0, он же stdin. Нельзя одновременно и то, и другое использовать. Можно попробовать разнести на разные дескрипторы.

необходимо запускать фаил script.sh с рут правами пробовал через EOF передать рут пасс, не получилось

Дай угадаю: у тебя скрипт запускает что-то типа sudo и запрашивает рутовый пароль в терминале? Иначе непонятно, как связан рут (учитывая, что указан $login@ip) и передача пароля через <<EOF.

А, да, ещё вот эта твоя конструкция шедевральна в своей бессмыссленности:

<< "EOF"
    echo $pass &> /dev/null
EOF
Т.е. ты сначала перенаправляешь стандартный вывод в /dev/null, а потом смотришь, что он тебе вывел (спойлер: ничего).

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.