2012-10-25 6 views
0

J'écris un script pour lancer une application Java et fournir de manière sécurisée l'application Java avec un mot de passe. Le mot de passe ne doit pas être renvoyé à l'écran et ne doit pas être visible par quiconque répertoriant les processus en cours d'exécution. Le script suivant fonctionne correctement pour ceci:stdin commutation entre bash et Java

echo -n "enter password: " 
read -r -s password 
java -classpath $CLASSPATH com.myclientscompany.Manage<<EOF 
$password 
EOF 

... avec le programme Java lisant le mot de passe comme une ligne de stdin. Le problème auquel je suis confronté est qu'après avoir pris le mot de passe de cette façon, je veux que l'application Java accepte de manière interactive d'autres entrées de l'utilisateur via la console. À l'heure actuelle, chaque tentative ultérieure de lecture de stdin dans Java retourne immédiatement avec null.

Existe-t-il un moyen de réinitialiser stdin à la saisie de la console à la fin de ce script?

+0

Pourquoi 'Manage 'ne lit-il pas directement à partir de' STDIN'? L'utilisation de '<< EOF' fermera' STDIN' à partir du processus Java. –

+0

Parce que le mot de passe serait renvoyé à l'écran lors de sa saisie. – waifnstray

Répondre