autoexpect script.exp
Clash Royale CLAN TAG#URR8PPP
I use autoexpect generated a script.exp. see following.
how to understand
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m " ?
and after I run script.exp. I got "ls" and "ls -l" result correctly.
and get command line prompt. but when I hit enter. there is no command line prompt. I have to use ctrl C, to exit so I can continue enter command from terminal.
What I'm missing?
#!/usr/bin/expect -f
#
# This Expect script was generated by autoexpect on Tue Dec 18 09:42:08 2018
# Expect and autoexpect were both written by Don Libes, NIST.
#
# Note that autoexpect does not guarantee a working script. It
# necessarily has to guess about certain things. Two reasons a script
# might fail are:
#
# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet,
# etc.) and devices discard or ignore keystrokes that arrive "too
# quickly" after prompts. If you find your new script hanging up at
# one spot, try adding a short sleep just before the previous send.
# Setting "force_conservative" to 1 (see below) makes Expect do this
# automatically - pausing briefly before sending each character. This
# pacifies every program I know of. The -c flag makes the script do
# this in the first place. The -C flag allows you to define a
# character to toggle this mode off and on.
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if $force_conservative
set send_slow 1 .1
proc send ignore arg
sleep .1
exp_send -s -- $arg
#
# 2) differing output - Some programs produce different output each time
# they run. The "date" command is an obvious example. Another is
# ftp, if it produces throughput statistics at the end of a file
# transfer. If this causes a problem, delete these patterns or replace
# them with wildcards. An alternative is to use the -p flag (for
# "prompt") which makes Expect only look for the last line of output
# (i.e., the prompt). The -P flag allows you to define a character to
# toggle this mode off and on.
#
# Read the man page for more info.
#
# -Don
set timeout -1
spawn $env(SHELL)
match_max 100000
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "lsr"
expect -exact "lsr
[0m[00;32manswerbot[0m [00;32mexecmds.sh[0m [00;32mexecmds.sh.exp[0m [00;32mgdb.sh[0m [00min[0m [00mnohup.out[0m [00;32mquestions[0m [00;32mscript.exp[0m [00mspawn[0m [00;32mstb.sh[0m [00;32mtarget.exp[0m [00;32mtarget.sh[0m [00;32mtel[0m [00mtel.log[0m [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "ls -lr"
expect -exact "ls -lr
total 56r
-rwxrwxr-x 1 luoric ccuser 256 Dec 10 14:26 [0m[00;32manswerbot[0mr
-rwxrwxr-x 1 luoric ccuser 264 Dec 13 17:07 [00;32mexecmds.sh[0mr
-rwxrwxr-x 1 luoric ccuser 424 Dec 13 17:13 [00;32mexecmds.sh.exp[0mr
-rwxrwxr-x 1 luoric ccuser 118 Dec 17 13:44 [00;32mgdb.sh[0mr
-rw-rw-r-- 1 luoric ccuser 8 Dec 10 12:13 [00min[0mr
-rw------- 1 luoric ccuser 6920 Dec 14 15:35 [00mnohup.out[0mr
-rwxrwxr-x 1 luoric ccuser 160 Dec 10 14:30 [00;32mquestions[0mr
-rwxrwxr-x 1 luoric ccuser 0 Dec 18 09:42 [00;32mscript.exp[0mr
-rw-rw-r-- 1 luoric ccuser 0 Dec 13 12:56 [00mspawn[0mr
-rwxrwxr-x 1 luoric ccuser 103 Dec 10 14:41 [00;32mstb.sh[0mr
-rwxrwxr-x 1 luoric ccuser 463 Dec 17 14:57 [00;32mtarget.exp[0mr
-rwxrwxr-x 1 luoric ccuser 140 Dec 17 13:50 [00;32mtarget.sh[0mr
-rwxrwxr-x 1 luoric ccuser 864 Dec 17 11:46 [00;32mtel[0mr
-rw-rw-r-- 1 luoric ccuser 1201 Dec 11 14:03 [00mtel.log[0mr
-rwxrwxr-x 1 luoric ccuser 153 Dec 13 13:13 [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "exitr"
expect eof
bash expect
add a comment |
I use autoexpect generated a script.exp. see following.
how to understand
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m " ?
and after I run script.exp. I got "ls" and "ls -l" result correctly.
and get command line prompt. but when I hit enter. there is no command line prompt. I have to use ctrl C, to exit so I can continue enter command from terminal.
What I'm missing?
#!/usr/bin/expect -f
#
# This Expect script was generated by autoexpect on Tue Dec 18 09:42:08 2018
# Expect and autoexpect were both written by Don Libes, NIST.
#
# Note that autoexpect does not guarantee a working script. It
# necessarily has to guess about certain things. Two reasons a script
# might fail are:
#
# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet,
# etc.) and devices discard or ignore keystrokes that arrive "too
# quickly" after prompts. If you find your new script hanging up at
# one spot, try adding a short sleep just before the previous send.
# Setting "force_conservative" to 1 (see below) makes Expect do this
# automatically - pausing briefly before sending each character. This
# pacifies every program I know of. The -c flag makes the script do
# this in the first place. The -C flag allows you to define a
# character to toggle this mode off and on.
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if $force_conservative
set send_slow 1 .1
proc send ignore arg
sleep .1
exp_send -s -- $arg
#
# 2) differing output - Some programs produce different output each time
# they run. The "date" command is an obvious example. Another is
# ftp, if it produces throughput statistics at the end of a file
# transfer. If this causes a problem, delete these patterns or replace
# them with wildcards. An alternative is to use the -p flag (for
# "prompt") which makes Expect only look for the last line of output
# (i.e., the prompt). The -P flag allows you to define a character to
# toggle this mode off and on.
#
# Read the man page for more info.
#
# -Don
set timeout -1
spawn $env(SHELL)
match_max 100000
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "lsr"
expect -exact "lsr
[0m[00;32manswerbot[0m [00;32mexecmds.sh[0m [00;32mexecmds.sh.exp[0m [00;32mgdb.sh[0m [00min[0m [00mnohup.out[0m [00;32mquestions[0m [00;32mscript.exp[0m [00mspawn[0m [00;32mstb.sh[0m [00;32mtarget.exp[0m [00;32mtarget.sh[0m [00;32mtel[0m [00mtel.log[0m [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "ls -lr"
expect -exact "ls -lr
total 56r
-rwxrwxr-x 1 luoric ccuser 256 Dec 10 14:26 [0m[00;32manswerbot[0mr
-rwxrwxr-x 1 luoric ccuser 264 Dec 13 17:07 [00;32mexecmds.sh[0mr
-rwxrwxr-x 1 luoric ccuser 424 Dec 13 17:13 [00;32mexecmds.sh.exp[0mr
-rwxrwxr-x 1 luoric ccuser 118 Dec 17 13:44 [00;32mgdb.sh[0mr
-rw-rw-r-- 1 luoric ccuser 8 Dec 10 12:13 [00min[0mr
-rw------- 1 luoric ccuser 6920 Dec 14 15:35 [00mnohup.out[0mr
-rwxrwxr-x 1 luoric ccuser 160 Dec 10 14:30 [00;32mquestions[0mr
-rwxrwxr-x 1 luoric ccuser 0 Dec 18 09:42 [00;32mscript.exp[0mr
-rw-rw-r-- 1 luoric ccuser 0 Dec 13 12:56 [00mspawn[0mr
-rwxrwxr-x 1 luoric ccuser 103 Dec 10 14:41 [00;32mstb.sh[0mr
-rwxrwxr-x 1 luoric ccuser 463 Dec 17 14:57 [00;32mtarget.exp[0mr
-rwxrwxr-x 1 luoric ccuser 140 Dec 17 13:50 [00;32mtarget.sh[0mr
-rwxrwxr-x 1 luoric ccuser 864 Dec 17 11:46 [00;32mtel[0mr
-rw-rw-r-- 1 luoric ccuser 1201 Dec 11 14:03 [00mtel.log[0mr
-rwxrwxr-x 1 luoric ccuser 153 Dec 13 13:13 [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "exitr"
expect eof
bash expect
Don't useautoexpect
unless you know exactly what you're doing.
– Emily E.
Dec 19 at 3:17
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile'sls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as theexpect
patterns.
– glenn jackman
Dec 21 at 22:08
add a comment |
I use autoexpect generated a script.exp. see following.
how to understand
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m " ?
and after I run script.exp. I got "ls" and "ls -l" result correctly.
and get command line prompt. but when I hit enter. there is no command line prompt. I have to use ctrl C, to exit so I can continue enter command from terminal.
What I'm missing?
#!/usr/bin/expect -f
#
# This Expect script was generated by autoexpect on Tue Dec 18 09:42:08 2018
# Expect and autoexpect were both written by Don Libes, NIST.
#
# Note that autoexpect does not guarantee a working script. It
# necessarily has to guess about certain things. Two reasons a script
# might fail are:
#
# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet,
# etc.) and devices discard or ignore keystrokes that arrive "too
# quickly" after prompts. If you find your new script hanging up at
# one spot, try adding a short sleep just before the previous send.
# Setting "force_conservative" to 1 (see below) makes Expect do this
# automatically - pausing briefly before sending each character. This
# pacifies every program I know of. The -c flag makes the script do
# this in the first place. The -C flag allows you to define a
# character to toggle this mode off and on.
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if $force_conservative
set send_slow 1 .1
proc send ignore arg
sleep .1
exp_send -s -- $arg
#
# 2) differing output - Some programs produce different output each time
# they run. The "date" command is an obvious example. Another is
# ftp, if it produces throughput statistics at the end of a file
# transfer. If this causes a problem, delete these patterns or replace
# them with wildcards. An alternative is to use the -p flag (for
# "prompt") which makes Expect only look for the last line of output
# (i.e., the prompt). The -P flag allows you to define a character to
# toggle this mode off and on.
#
# Read the man page for more info.
#
# -Don
set timeout -1
spawn $env(SHELL)
match_max 100000
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "lsr"
expect -exact "lsr
[0m[00;32manswerbot[0m [00;32mexecmds.sh[0m [00;32mexecmds.sh.exp[0m [00;32mgdb.sh[0m [00min[0m [00mnohup.out[0m [00;32mquestions[0m [00;32mscript.exp[0m [00mspawn[0m [00;32mstb.sh[0m [00;32mtarget.exp[0m [00;32mtarget.sh[0m [00;32mtel[0m [00mtel.log[0m [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "ls -lr"
expect -exact "ls -lr
total 56r
-rwxrwxr-x 1 luoric ccuser 256 Dec 10 14:26 [0m[00;32manswerbot[0mr
-rwxrwxr-x 1 luoric ccuser 264 Dec 13 17:07 [00;32mexecmds.sh[0mr
-rwxrwxr-x 1 luoric ccuser 424 Dec 13 17:13 [00;32mexecmds.sh.exp[0mr
-rwxrwxr-x 1 luoric ccuser 118 Dec 17 13:44 [00;32mgdb.sh[0mr
-rw-rw-r-- 1 luoric ccuser 8 Dec 10 12:13 [00min[0mr
-rw------- 1 luoric ccuser 6920 Dec 14 15:35 [00mnohup.out[0mr
-rwxrwxr-x 1 luoric ccuser 160 Dec 10 14:30 [00;32mquestions[0mr
-rwxrwxr-x 1 luoric ccuser 0 Dec 18 09:42 [00;32mscript.exp[0mr
-rw-rw-r-- 1 luoric ccuser 0 Dec 13 12:56 [00mspawn[0mr
-rwxrwxr-x 1 luoric ccuser 103 Dec 10 14:41 [00;32mstb.sh[0mr
-rwxrwxr-x 1 luoric ccuser 463 Dec 17 14:57 [00;32mtarget.exp[0mr
-rwxrwxr-x 1 luoric ccuser 140 Dec 17 13:50 [00;32mtarget.sh[0mr
-rwxrwxr-x 1 luoric ccuser 864 Dec 17 11:46 [00;32mtel[0mr
-rw-rw-r-- 1 luoric ccuser 1201 Dec 11 14:03 [00mtel.log[0mr
-rwxrwxr-x 1 luoric ccuser 153 Dec 13 13:13 [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "exitr"
expect eof
bash expect
I use autoexpect generated a script.exp. see following.
how to understand
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m " ?
and after I run script.exp. I got "ls" and "ls -l" result correctly.
and get command line prompt. but when I hit enter. there is no command line prompt. I have to use ctrl C, to exit so I can continue enter command from terminal.
What I'm missing?
#!/usr/bin/expect -f
#
# This Expect script was generated by autoexpect on Tue Dec 18 09:42:08 2018
# Expect and autoexpect were both written by Don Libes, NIST.
#
# Note that autoexpect does not guarantee a working script. It
# necessarily has to guess about certain things. Two reasons a script
# might fail are:
#
# 1) timing - A surprising number of programs (rn, ksh, zsh, telnet,
# etc.) and devices discard or ignore keystrokes that arrive "too
# quickly" after prompts. If you find your new script hanging up at
# one spot, try adding a short sleep just before the previous send.
# Setting "force_conservative" to 1 (see below) makes Expect do this
# automatically - pausing briefly before sending each character. This
# pacifies every program I know of. The -c flag makes the script do
# this in the first place. The -C flag allows you to define a
# character to toggle this mode off and on.
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if $force_conservative
set send_slow 1 .1
proc send ignore arg
sleep .1
exp_send -s -- $arg
#
# 2) differing output - Some programs produce different output each time
# they run. The "date" command is an obvious example. Another is
# ftp, if it produces throughput statistics at the end of a file
# transfer. If this causes a problem, delete these patterns or replace
# them with wildcards. An alternative is to use the -p flag (for
# "prompt") which makes Expect only look for the last line of output
# (i.e., the prompt). The -P flag allows you to define a character to
# toggle this mode off and on.
#
# Read the man page for more info.
#
# -Don
set timeout -1
spawn $env(SHELL)
match_max 100000
expect -exact " r
Type ha for help on aliasesr
r
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "lsr"
expect -exact "lsr
[0m[00;32manswerbot[0m [00;32mexecmds.sh[0m [00;32mexecmds.sh.exp[0m [00;32mgdb.sh[0m [00min[0m [00mnohup.out[0m [00;32mquestions[0m [00;32mscript.exp[0m [00mspawn[0m [00;32mstb.sh[0m [00;32mtarget.exp[0m [00;32mtarget.sh[0m [00;32mtel[0m [00mtel.log[0m [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "ls -lr"
expect -exact "ls -lr
total 56r
-rwxrwxr-x 1 luoric ccuser 256 Dec 10 14:26 [0m[00;32manswerbot[0mr
-rwxrwxr-x 1 luoric ccuser 264 Dec 13 17:07 [00;32mexecmds.sh[0mr
-rwxrwxr-x 1 luoric ccuser 424 Dec 13 17:13 [00;32mexecmds.sh.exp[0mr
-rwxrwxr-x 1 luoric ccuser 118 Dec 17 13:44 [00;32mgdb.sh[0mr
-rw-rw-r-- 1 luoric ccuser 8 Dec 10 12:13 [00min[0mr
-rw------- 1 luoric ccuser 6920 Dec 14 15:35 [00mnohup.out[0mr
-rwxrwxr-x 1 luoric ccuser 160 Dec 10 14:30 [00;32mquestions[0mr
-rwxrwxr-x 1 luoric ccuser 0 Dec 18 09:42 [00;32mscript.exp[0mr
-rw-rw-r-- 1 luoric ccuser 0 Dec 13 12:56 [00mspawn[0mr
-rwxrwxr-x 1 luoric ccuser 103 Dec 10 14:41 [00;32mstb.sh[0mr
-rwxrwxr-x 1 luoric ccuser 463 Dec 17 14:57 [00;32mtarget.exp[0mr
-rwxrwxr-x 1 luoric ccuser 140 Dec 17 13:50 [00;32mtarget.sh[0mr
-rwxrwxr-x 1 luoric ccuser 864 Dec 17 11:46 [00;32mtel[0mr
-rw-rw-r-- 1 luoric ccuser 1201 Dec 11 14:03 [00mtel.log[0mr
-rwxrwxr-x 1 luoric ccuser 153 Dec 13 13:13 [00;32mterm[0mr
]0;luoric@linux-pc-64:/home/luoric/tmp[01;34mluoric@linux-pc-64[01;34m tmp $[00m "
send -- "exitr"
expect eof
bash expect
bash expect
edited Dec 18 at 18:14
Rui F Ribeiro
39k1479129
39k1479129
asked Dec 18 at 18:05
user1932637
62
62
Don't useautoexpect
unless you know exactly what you're doing.
– Emily E.
Dec 19 at 3:17
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile'sls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as theexpect
patterns.
– glenn jackman
Dec 21 at 22:08
add a comment |
Don't useautoexpect
unless you know exactly what you're doing.
– Emily E.
Dec 19 at 3:17
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile'sls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as theexpect
patterns.
– glenn jackman
Dec 21 at 22:08
Don't use
autoexpect
unless you know exactly what you're doing.– Emily E.
Dec 19 at 3:17
Don't use
autoexpect
unless you know exactly what you're doing.– Emily E.
Dec 19 at 3:17
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile's
ls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as the expect
patterns.– glenn jackman
Dec 21 at 22:08
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile's
ls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as the expect
patterns.– glenn jackman
Dec 21 at 22:08
add a comment |
1 Answer
1
active
oldest
votes
As a (formatted) followup to my comment, this is the actual take-away from that autoexpect script:
#!/usr/bin/expect
set prompt "$[00m $"
spawn bash
expect -re $prompt
send -- "lsr"
expect -re $prompt
send -- "ls -lr"
send -- "exitr"
expect eof
That's what I mean about removing 95%.
To actually answer your question, if you want to interact with the spawned shell, change
expect eof
to
interact
That stops the scripted interaction and puts the user in command.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489734%2fautoexpect-script-exp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As a (formatted) followup to my comment, this is the actual take-away from that autoexpect script:
#!/usr/bin/expect
set prompt "$[00m $"
spawn bash
expect -re $prompt
send -- "lsr"
expect -re $prompt
send -- "ls -lr"
send -- "exitr"
expect eof
That's what I mean about removing 95%.
To actually answer your question, if you want to interact with the spawned shell, change
expect eof
to
interact
That stops the scripted interaction and puts the user in command.
add a comment |
As a (formatted) followup to my comment, this is the actual take-away from that autoexpect script:
#!/usr/bin/expect
set prompt "$[00m $"
spawn bash
expect -re $prompt
send -- "lsr"
expect -re $prompt
send -- "ls -lr"
send -- "exitr"
expect eof
That's what I mean about removing 95%.
To actually answer your question, if you want to interact with the spawned shell, change
expect eof
to
interact
That stops the scripted interaction and puts the user in command.
add a comment |
As a (formatted) followup to my comment, this is the actual take-away from that autoexpect script:
#!/usr/bin/expect
set prompt "$[00m $"
spawn bash
expect -re $prompt
send -- "lsr"
expect -re $prompt
send -- "ls -lr"
send -- "exitr"
expect eof
That's what I mean about removing 95%.
To actually answer your question, if you want to interact with the spawned shell, change
expect eof
to
interact
That stops the scripted interaction and puts the user in command.
As a (formatted) followup to my comment, this is the actual take-away from that autoexpect script:
#!/usr/bin/expect
set prompt "$[00m $"
spawn bash
expect -re $prompt
send -- "lsr"
expect -re $prompt
send -- "ls -lr"
send -- "exitr"
expect eof
That's what I mean about removing 95%.
To actually answer your question, if you want to interact with the spawned shell, change
expect eof
to
interact
That stops the scripted interaction and puts the user in command.
answered Dec 22 at 3:15
community wiki
glenn jackman
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489734%2fautoexpect-script-exp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Don't use
autoexpect
unless you know exactly what you're doing.– Emily E.
Dec 19 at 3:17
Autoexpect records exactly what you typed, and exactly what you saw. You saw colourized text thanks to your shell profile's
ls
alias, and autoexpect dutifully wrote the terminal colour codes into the file. When I use autoexpect, I always immediately edit the resulting script and remove probably 95% of the contents -- you generally just want to determine what the prompts are so you can use them as theexpect
patterns.– glenn jackman
Dec 21 at 22:08