|
| 1 | +#!/usr/bin/expect -f |
| 2 | +# |
| 3 | +# This Expect script was generated by autoexpect on Mon May 5 15:07:42 2025 |
| 4 | +# Expect and autoexpect were both written by Don Libes, NIST. |
| 5 | +# |
| 6 | +# Note that autoexpect does not guarantee a working script. It |
| 7 | +# necessarily has to guess about certain things. Two reasons a script |
| 8 | +# might fail are: |
| 9 | +# |
| 10 | +# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet, |
| 11 | +# etc.) and devices discard or ignore keystrokes that arrive "too |
| 12 | +# quickly" after prompts. If you find your new script hanging up at |
| 13 | +# one spot, try adding a short sleep just before the previous send. |
| 14 | +# Setting "force_conservative" to 1 (see below) makes Expect do this |
| 15 | +# automatically - pausing briefly before sending each character. This |
| 16 | +# pacifies every program I know of. The -c flag makes the script do |
| 17 | +# this in the first place. The -C flag allows you to define a |
| 18 | +# character to toggle this mode off and on. |
| 19 | + |
| 20 | +set force_conservative 0 ;# set to 1 to force conservative mode even if |
| 21 | + ;# script wasn't run conservatively originally |
| 22 | +if {$force_conservative} { |
| 23 | + set send_slow {1 .1} |
| 24 | + proc send {ignore arg} { |
| 25 | + sleep .1 |
| 26 | + exp_send -s -- $arg |
| 27 | + } |
| 28 | +} |
| 29 | + |
| 30 | +# |
| 31 | +# 2) differing output - Some programs produce different output each time |
| 32 | +# they run. The "date" command is an obvious example. Another is |
| 33 | +# ftp, if it produces throughput statistics at the end of a file |
| 34 | +# transfer. If this causes a problem, delete these patterns or replace |
| 35 | +# them with wildcards. An alternative is to use the -p flag (for |
| 36 | +# "prompt") which makes Expect only look for the last line of output |
| 37 | +# (i.e., the prompt). The -P flag allows you to define a character to |
| 38 | +# toggle this mode off and on. |
| 39 | +# |
| 40 | +# Read the man page for more info. |
| 41 | +# |
| 42 | +# -Don |
| 43 | + |
| 44 | + |
| 45 | +set timeout -1 |
| 46 | +spawn google-authenticator -t |
| 47 | +match_max 100000 |
| 48 | +expect "Enter code from app (-1 to skip): " |
| 49 | +send -- "-1\r" |
| 50 | +expect "Do you want me to update your \"/root/.google_authenticator\" file? (y/n) " |
| 51 | +send -- "n\r" |
| 52 | +expect eof |
0 commit comments