Выполнение команд с использованием sudo на удаленном сервере после входа в PuTTY через пакетный файл

Выполнение команд с использованием sudo на удаленном сервере после входа в PuTTY через пакетный файл

Мне нужно ежедневно входить на удаленный сервер и выполнять один и тот же набор задач. Я использую платформу Windows, а удаленный сервер — Unix. Я использую PuTTY для входа на удаленный сервер. Чтобы сократить объем ручной работы, мне нужно автоматизировать эту задачу.

Я попробовал этот код:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

Содержит command.txt:

sudo su - user1 
ls 
cd directory

Работает только первая команда command.txt, а затем PuTTY ожидает ввода данных от пользователя.

Мне нужно, чтобы все команды выполнялись без участия пользователя.

Вещи, которые имеют значение:

  • Я не являюсь пользователем root

  • Доступ предоставлен для переключения на режим user1без пароля

  • У меня есть ограничение на использование только PuTTY (установка Plink не разрешена)

решение1

Поскольку команды, содержащиеся в , command.txtвыполняютсямастер-оболочкапо одному.

Итак, главная оболочка выполняет sudo, ждет, пока она завершит работу, прежде чем приступить к выполнению других команд ( lsи cd). И sudoне завершается (по крайней мере, сама по себе).

В то время как вы хотите, чтобы lsи cdвыполнялось в течениедетская раковинавыполнено su.

Вам нужно сказать им, suчтобы они выполняли команды.

Это должно сработать:

sudo su - -c "ls ; cd directory" user1

или это

echo "ls; cd directory" | sudo su - user1

Хотя я ожидаю, что вы действительно хотите продолжить работу в оболочке. В то время как вышеприведенное завершится после выполнения команд.

Итак, вы хотите добавить оболочку в список команд:

sudo su - -c "ls ; cd directory ; /bin/bash" user1

или

echo "ls ; cd directory ; /bin/bash" | sudo su - user1

Связанный контент