2009-10-12 6 views
1

Я использую задачу SSHEXEC ant для запуска SSH-скрипта с удаленной линией Linux.Ответы на запросы оболочки из задачи Ant SSH (SSHEXEC)

Это работало нормально, пока я не попробую вызвать сценарий ksh, который запрашивает пользователя для ввода. Сценарий изменяет текущего пользователя (например, su). Он запрашивает у пользователя change_request_id и change_request_reason. Таким образом, с помощью этой команды, как правило, в оболочке будет выглядеть следующим образом:

change_user deploy_user 
Please enter the changes request number for doing this: 1234 
Please enter the changes request reason: Because I can 
<deploy_user> 

Но когда я запускаю эти команды из SSHEXEC, он получает в первой строке «Пожалуйста, введите изменения запросить номер для этого:» и останавливается. Несмотря на то, что я передаю ответ на этот запрос через SSHEXEC, он все еще застрял здесь.

К сожалению, у нас нет доступа для замены или копирования сценария оболочки change_user.

Мне было интересно, был ли какой-то способ использовать SSHEXEC, который посылал бы быстрые ответы с помощью команды.

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

ответ

2

Можно ли добавить еще один скрипт на том же сервере, что и скрипт смены пользователя, который принимает параметры командной строки, а затем сам вызывает скрипт запроса на изменение? Например. в ksh:

#!/usr/bin/ksh 
# 
# $1 is change request number 
# $2 is change request reason 
# 
/path/to/change_request_cmd <<PARAMS 
$1 
$2 
PARAMS 

Может быть проще, чтобы SSHEXEC называл этот скрипт.

+0

Спасибо, Уильям. Ваше решение выглядит идеально, но когда я его попробовал, он сломался, так как скрипт, который я запускаю, меняет текущего пользователя, поэтому перед его завершением будут ошибки. Помимо этой проблемы, ваше решение действительно позволяет мне отвечать на приглашения на скрипт. Я думаю, теперь дело в том, чтобы обойти эту проблему с изменениями! Приветствия. – Ben

+1

Вы можете настроить sudo для запуска этой команды в качестве другого пользователя - например. префикс/path/to/change_request_cmd с помощью sudo -u otheruser и настройте/etc/sudoers, чтобы разрешить это без пароля. –

 Смежные вопросы

  • Нет связанных вопросов^_^