comment utiliser les attendre et script shell ensemble
Je suis à l'aide de script expect et certains script shell de commande comme ci-dessous.
#!/usr/bin/expect
#!/bin/bash
spawn sudo mkdir -p /usr/lib/jvm1
expect "\[sudo\] password for hduser:"
send "cisco\r"
spawn sudo apt-get install openssh-client
Mais la commande ci-dessus didnot install openssh-client. Cela montre simplement la commande. et rien n'est installé.
Où je fais de mal ici ?
jetez un oeil à sexpect avec laquelle vous pouvez écrire Attendre scripts shell code uniquement.
OriginalL'auteur navaz | 2014-10-29
Vous devez vous connecter pour publier un commentaire.
Après avoir fait
spawn
sur leopenssh-client
d'installation, puis vous avez àexpect
pour quelque chose alors queexpect
va attendre que. Autre chose,expect
n'aurez pas à vous soucier de rien et tout simplement de quitter. Dans ce cas, nous pouvons attendre uneof
pour confirmer que l'installation est terminée.Dans le code ci-dessus, la raison de l'utilisation de la lettre " $ ' est la raison pour laquelle l'invite du terminal.Le manuel de l'interaction des actions comme ci-dessous.
La dernière ligne ayant la
$
symbole dans le terminal. Basé sur votre terminal, vous pouvez personnaliser l'invite de commandes. Vous demandez peut-être pourquoi nous avons à envoyer le mot de passe pour la deuxième fois. Rappelez-vous, il n'est pas habituel terminal, où donner de mot de passe pour admin suffire à d'autres opérations d'administration jusqu'à la borne fermée. Avecexpect
, nous sommes le frai de l'sudo
à chaque fois ce qui est différent et c'est la raison pour donner une fois de plus.D'Andrew, a souligné, vous n'avez pas besoin d'ajouter
#!
avecbash
chemin.Mise à jour :
Dans
expect
, le délai d'expiration par défaut est10 seconds
. Vous pouvez le modifier en utilisantset
comme indiqué ci-dessous.OriginalL'auteur Dinesh
Vous avez besoin de passer -y dans apt-get, comme suit:
spawn sudo apt-get install -y openssh-client
-ou - s'attendre à l'installation d'invite et de réponse "Y"
Aussi, vous n'avez pas besoin d'exécuter deux coquilles, juste
#!/usr/bin/expect
devrait suffire.OriginalL'auteur Andrew