yegong
yegong

Reputation: 759

Hide output from expect

Here's part of an expect script

#/usr/bin/expect 

spawn -noecho kwalletcli -f Passwords -e keyofmypassword
expect ".*"
set passwd $expect_out(buffer)

# do some thing
# ...

It read password from kwalletcli, and store in variable passwd. So I can connect to the servers with this passwd.

However, the output of kwalletcli is pass through expect and show on console. How can I hide that.

Upvotes: 29

Views: 35146

Answers (3)

Orestes
Orestes

Reputation: 1

is with -stty and stty

stty -echo send_user "Password: " expect_user -re "(.*)\n" set password $expect_out(1,string) stty echo

Upvotes: 0

glenn jackman
glenn jackman

Reputation: 247250

Try adding

log_user 0

to your script. That should turn off the display to stdout.

If you want to turn it on again for the "do some thing" part of the program, re-enable it

log_user 1

Upvotes: 65

Hamid Reza Moradi
Hamid Reza Moradi

Reputation: 469

using this command:

exec >log 2>&1

you can forward your output to a file or you can pass it to dev/null

Upvotes: 1

Related Questions