
Мне нужно ежедневно входить на удаленный сервер и выполнять один и тот же набор задач. Я использую платформу 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