While looking for solution on terminal window resize using expect, found an alternative tool - sexpect. Despite the naming, a great tool actually.
Actually helps me to solve many issues and more of all - combine shell and expect-like scripts in 1 file.
Just to show an simple example (yes, I'm aware of ssh keys):
shell + expect:
#!/bin/bash
...
SSH_PASS=XXXXX
SSH_ADDR=YYYYY
expect <(cat << EOD
spawn ssh $SSH_ADDR
expect "Password:"
send -- "${SSH_PASS}\n"
interact
EOD
)
shell + sexpect
#!/bin/bash
...
SSH_PASS=XXXXX
SSH_ADDR=YYYYY
export SEXPECT_SOCKFILE=/tmp/sexpect-$$.sock
type -P sexpect >& /dev/null || exit 1
echo "Connecting to $SSH_ADDR..."
sexpect spawn -idle 120 -t 60 $SSH_ADDR
if [[ $? != 0 ]]; then
echo "Spawn failed!"
exit 1
fi
sexpect expect -ex "Password:"
if [[ $? != 0 ]]; then
echo "Nowhere to enter password!"
exit 1
fi
sexpect send -enter "$SSH_PASS"
sexpect set -idle 5
sexpect interact
As a bonus - terminal window resize work as expected.
No comments:
Post a Comment