[gull] script de connexion automatique

Marc SCHAEFER schaefer at alphanet.ch
Mon Jun 14 14:11:01 CEST 2004


On Mon, Jun 14, 2004 at 10:46:09AM +0200, marquis at altern.org wrote:
> echo "pass" | startup
> La commande "startup" demande un mot de passe pour continuer.
> Bien sur le script ci-dessus ne marche pas:
> - pour quelle raison? le pipe n'envoie-t-il pas le mot de passe au STDIN de la commande comme le ferait la saisie du mot au clavier??

Il est d'usage de séparer les flots de contrôle en entrée standard,
sortie standard, sortie d'erreur et terminal de contrôle (tty).

Si vous faites

   une | suite | de | commandes

il est d'usage que seules les données -- et non pas les erreurs ni le
contrôle -- soit envoyé dans le pipe.

C'est pour cette raison que les erreurs sont envoyés sur stderr et non
pas stdout, et que les interactions avec l'opérateur sont faites via
/dev/tty et non pas stdin.

> - qu'est-ce qu'il faut faire pour que ?a marche?

Tout dépend du type de la commande. Certaines commandes peuvent obtenir
le mot de passe via une option de ligne de commande (mauvais, ps auxw);
d'autres peuvent le lire d'un fichier de configuration protégé; ou
d'une variable d'environnement (partiellement mauvais). D'autres enfin
peuvent utiliser des authentifications basées sur d'autres méthodes
(clé publique, agent d'authentification).

Si tout cela est impossible et qu'améliorer le programme est non
pratique, on peut utiliser un programme fait exprès pour cela. Ce
programme s'appelle expect. Il supporte me semble-t-il également
l'interaction via /dev/tty (via un pty dans ce cas).

Une réponse plus courte de ma part aurait peut-être été possible si la
question avait été plus précise.




More information about the gull mailing list