Получение plink ssh для выполнения команды в фоновом режиме на целевой машине с паролем

У меня возникла проблема, когда я пытаюсь запустить команду в Plink с флагом -ssh и -t (я использую sudo), но когда служба (dmf) запускается, а tty уничтожается (очевидно, потому что это когда plink завершается), служба также умирает. Мне нужен способ отсоединить команду, но также иметь возможность вводить пароль для sudo...

Пока у меня есть это, которое запускает службу, а затем служба умирает после отключения plink после выполнения.

D:\bin\x64\Debug>plink.exe -ssh -t -pw Password1 [email protected] "echo -e Password1\n | sudo -S service dmf start"

Любая помощь будет оценена по достоинству.

ПРИМЕЧАНИЕ. Мне не разрешено изменять какой-либо файл в поле, например, файл sudoers или sudo visudo и т. д.


person sushi7777    schedule 15.01.2016    source источник


Ответы (3)


Используйте это для перезапуска службы:

plink.exe -pw yourpassword -t [email protected] sudo **-b** service karaf start
person user2401508    schedule 05.08.2016

Вместо -t попробуйте -tt, чтобы «принудительно выделить tty, даже если ssh не имеет локального tty».

person Stephan Henningsen    schedule 15.01.2016
comment
Также после закрытия соединения служба все еще умирает. - person sushi7777; 15.01.2016
comment
Хорошо. Я не знаком с этим конкретным ssh-клиентом, но подумал, что стоит попробовать. Мне удалось применить -tt при возникновении подобных проблем. - person Stephan Henningsen; 15.01.2016
comment
Справедливо. К сожалению, простое использование ssh и ввод запрашиваемого пароля -tt не решает проблему. - person sushi7777; 15.01.2016

Возможно, вы можете использовать nohub и добавить & в часть вашей команды, которая выполняется на сервере. , вот так: D:\bin\x64\Debug>plink.exe -ssh -t -pw Password1 [email protected] "echo -e Password1\n | sudo -S nohub service dmf start &"

Это должно заставить его запускаться в фоновом режиме и игнорировать выход из системы.

person Stephan Henningsen    schedule 15.01.2016
comment
Появляется запрос пароля, и без моего ввода происходит вот что: - person sushi7777; 15.01.2016
comment
D:\bin\x64\Debug›plink.exe -ssh -t -pw Password1 [email protected] echo -e Password1\n | sudo -S nohub service dmf stop [sudo] пароль для администратора: Извините, попробуйте еще раз. [sudo] пароль для администратора: sudo: 1 неправильная попытка ввода пароля - person sushi7777; 15.01.2016
comment
Возможно nohub sudo. Вы помните конечный &?. Извините, у меня закончились идеи. Но когда я думаю об этом, я нахожу странным, что ваша сессия должна продолжать работать, чтобы запустить службу — хотя команда service, заметьте. Я ожидаю, что service будет продолжать работать до тех пор, пока служба не запустится, а затем вернется. Хотя могу ошибаться. В 3-й раз ;) - person Stephan Henningsen; 15.01.2016
comment
эхо -e Пароль1\n | nohub sudo -S service dmf stop, отображает bash: nohub: команда не найдена :(. Это странно, но я уверен, что для этого есть обходной путь. Использование sudo -b переводит процесс в фоновый режим и он продолжает работать после того, как сеанс умирает, что хорошо, но это предполагает, что мы вводим пароль Просто нужно как-то ввести пароль :( - person sushi7777; 15.01.2016
comment
Можете ли вы поместить свои серверные команды в скрипт на сервере? Разделение задач может упростить задачу. - person Stephan Henningsen; 15.01.2016
comment
К сожалению, мне не разрешено размещать что-либо на сервере. Должна быть остановка службы, запуск службы, уход... все удаленно. - person sushi7777; 15.01.2016
comment
Возможно, стоит выяснить, доступен ли nohub на сервере. - person Stephan Henningsen; 15.01.2016
comment
Команда, которую вы ищете, это nohup с буквой P, а не B. С уважением. - person iriusf; 28.01.2021
comment
Совет действительно полезный =) - person Stephan Henningsen; 29.01.2021