2009-10-12 16 views
1

J'utilise la tâche ant SSHEXEC pour exécuter un script SSH sur une machine Linux distante.Répondre aux invites shell de la tâche Ant SSH (SSHEXEC)

Cela a fonctionné correctement jusqu'à ce que j'essaie d'appeler un script ksh qui invite l'utilisateur à entrer. Le script change l'utilisateur actuel (comme su). Il invite l'utilisateur à modifier_request_id et à modifier_request_reason. Donc, en utilisant cette commande normalement dans une coquille ressemblerait à ceci:

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> 

Mais quand je lance ces commandes de SSHEXEC, il arrive à la première invite « S'il vous plaît saisir les changements demandent numéro pour ce faire: » et arrête. Même si je redirige une réponse à cette invite via SSHEXEC, elle reste bloquée ici.

Malheureusement, nous n'avons pas accès pour modifier ou copier le script shell change_user.

Je me demandais s'il y avait un moyen d'utiliser SSHEXEC qui enverrait des réponses rapides avec la commande.

Toute aide serait appréciée.

Répondre

2

Pouvez-vous placer un autre script sur le même serveur que le script de changement d'utilisateur qui accepte les paramètres de ligne de commande, puis appelle le script de demande de changement lui-même? Par exemple. dans ksh:

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

Il peut être plus facile d'appeler SSHEXEC à la place.

+0

Merci William. Votre solution semble idéale, cependant quand je l'ai essayée, elle s'est cassée pendant que le manuscrit que je cours change l'utilisateur courant, donc il commet des erreurs avant qu'il finisse. En dehors de ce problème, votre solution me permet en effet de répondre aux invites de script. Je suppose que c'est maintenant une question de contourner ce problème d'utilisateur de changement! À votre santé. – Ben

+1

Vous pouvez configurer sudo pour qu'il vous permette d'exécuter cette commande en tant qu'un autre utilisateur - par ex. préfixez/path/to/change_request_cmd avec sudo -u otheruser, et configurez/etc/sudoers pour autoriser cela sans mot de passe. –

Questions connexes