J'écris quelques-uns d'autres commandes à Bash.
script: p> Mes intentions avec le script sont, laissez-la d'abord telnet dans une machine, quand il voit une invite1, laissez-le me donner le contrôle, je vais exécuter une commande de chargement d'une image spécifique. Attendez ensuite que Invest2 apparaisse (ce qui indique que l'image a été chargée). Puis laissez-le exécuter l'autre ensemble de commandes. P> Après avoir exécuté le script, je pourrais entrer dans le mode interactif, charger mon image. Le problème est de sortir du mode interactif sur la machine distante et de le redonner le contrôle. p> L'erreur que j'ai obtenue: p> Comment puis-je faire cela? p> p>
3 Réponses :
Votre problème est deux fois ...
Vous devez interagir avec un Après votre contrôle de retour, le script devra à nouveau obtenir l'invite, ce qui signifie que la première chose que vous faites après le contrôle de la commande à l'attente est d'envoyer un autre Exemple suit ... p> explicite code>, et donnez-lui un moyen de savoir que vous avez publié le contrôle ... Dans ce cas, j'utilise trois signes plus et appuyez sur Entrée. < / p> li>
\ r code>. J'ai édité de ce que je pense que vous essayez de faire ... p> li>
ol>
Merci Mike pour cette suggestion. Je l'ai modifié un peu et je l'ai adapté à mon problème.
Changement de code: p> La valeur Timetout 10 n'est pas liée au délai d'expiration Même après cela, j'ai fait face à un autre problème, après Pour votre défini -1 / Code> Nous avons défini initialement. Par conséquent, je peux exécuter les commandes que je veux sur
inviter1 code> et une fois que le clavier est inactif pendant 10 secondes, puis le script gagne le contrôle. P>
Inviter1 code>, je voulais exécuter la commande pour charger une image particulière. Le chargement de l'image prend environ 2 minutes. Même avec
SET Timeout -1 CODE> Le script chronométrant en attente de
invite2 code>. Ce n'est pas le délit Telnet, même, que j'ai vérifié. Mais la solution pour cela est l'ajout exp_continue en cas de délai d'attente dans la déclaration d'attente. P>
SET Timeout -1 Code> Pour prendre en compte, il doit être placé avant la commande Suppy Telnet dans l'attente. p> p>
Le manuel dit: p> mais je ne pouvais pas obtenir que cela fonctionne (sauf où je l'ai utilisé ci-dessous, combiné avec Et la solution ici en utilisant alors ce que j'ai fait à la place. Mode interactif et ont simplement un moyen de fournir une entrée, une ligne à la fois. Cela fonctionne même pour les touches fléchées et Le Utilisation de Je voulais automatiser la mise à niveau de do-abandon qui ne supporte pas correctement les drapeaux non interactifs habituels de Debian (voir ici ) ... il est juste suspendu et ignore la saisie à la place. de poursuivre après une question. Mais les questions sont imprévisibles ... et une mise à niveau abandonnée signifie que vous pouvez gâcher votre système, de sorte que des retombées à l'interaction sont nécessaires. P> h2> retour code> n'a pas fonctionné pour moi car dans mon cas, ce n'était pas une coquille qui peut simplement m'empeller à nouveau avec la même question. Je ne pouvais pas comprendre comment l'obtenir pour correspondre à ce qui a été imprimé avant que je n'ai fait code> retour code>. P>
attendre (pour fixer la solution ci-dessus) = échouer h2>
-Indices code> qui fait Il fonctionne là-bas et aucune idée de la façon de le faire fonctionner pour obtenir une sortie précédente introduite dans un nouveau
attendre {...} code> bloc.) p>
attendre h2>
attendre code> n'a pas fonctionné pour moi non plus parce qu'il n'avait aucune explication et n'a pas été utilisé comme je voulais, je ne savais donc pas comment appliquer cet exemple limité dans mon fichier d'attendu réel. p>
ma solution h2>
alt + ... code>, (dans les questions de dialogue DPKG) mais pas pour simplement
< Oui> code> ou alt + o pour
-I $ user_spawne_id code> se trouve au lieu de seulement En regardant votre processus de génie, il examine également ce que les types d'utilisateurs. Cela affecte tout ce qui précède, vous utilisez donc
attendu_after code> ou le mettre sous le reste, pas
attendu_before code>.
-Indices code> permet de lire la partie capturée de l'expression régulière correspondant.
attendre (1, chaîne) code> est la partie que je voulais (tout sauf le côlon). p>
attendu_after code> Il s'appliquera à tous les éléments suivants CODE> Attendez-vous code> jusqu'au prochain
attendu_after code>. Vous pouvez donc mettre cela n'importe où au-dessus de vos lignes habituelles code> Attendez-vous code> dans le fichier. P>
et mon cas / but h2>
Comment comptez-vous quitter le mode interactif? Est-ce en attendant une invite
code>?
La valeur du délai d'attente de 20, je suppose que je vais me sortir. Est-ce que je me trompe ici? Une fois que je suis sorti, je veux m'attendre à prendre le contrôle et qu'attendez-vous pour inviter. Ensuite, il peut exécuter l'ensemble des commandes de FRTER.