2018-03-28 16:21:31 +00:00
|
|
|
#! /usr/bin/env bash
|
2008-01-28 21:37:16 +00:00
|
|
|
# source: readline-test.sh
|
2016-07-22 06:54:31 +00:00
|
|
|
# Copyright Gerhard Rieger and contributors (see file CHANGES)
|
2008-01-27 12:00:08 +00:00
|
|
|
# Published under the GNU General Public License V.2, see file COPYING
|
|
|
|
|
|
|
|
# script that simulates a simple program with authentication.
|
|
|
|
# is just for testing the readline features
|
|
|
|
# perform the test with something like:
|
|
|
|
# ./socat readline,history=$HOME/.history,noecho='^Password: ' system:./readline-test.sh,pty,setsid,ctty,stderr,sigint,sigquit,echo=0,raw
|
|
|
|
|
|
|
|
|
|
|
|
BANNER='readline feature test program'
|
|
|
|
USERPROMPT='Authentication required\nUsername: '
|
|
|
|
PWDPROMPT='Password: '
|
|
|
|
PROMPT='prog> '
|
|
|
|
|
|
|
|
# degenerated user database
|
|
|
|
CREDUSER="user"
|
|
|
|
CREDPASS="password"
|
|
|
|
|
|
|
|
if [ $(echo "x\c") = "x" ]; then ECHO="echo"
|
|
|
|
elif [ $(echo -e "x\c") = "x" ]; then ECHO="echo -e"
|
|
|
|
fi
|
|
|
|
|
|
|
|
#trap "$ECHO $0 got SIGINT" INT
|
|
|
|
trap "$ECHO $0 got SIGINT" INT
|
|
|
|
trap "$ECHO $0 got SIGQUIT" QUIT
|
|
|
|
|
|
|
|
# print banner
|
|
|
|
$ECHO "$BANNER"
|
|
|
|
|
2008-08-17 21:28:11 +00:00
|
|
|
# on (some) ksh read -p does not mean prompt
|
|
|
|
$ECHO "$USERPROMPT\c"; read -r USERNAME
|
|
|
|
$ECHO "$PWDPROMPT\c"; read -rs PASSWORD
|
2008-01-27 12:00:08 +00:00
|
|
|
$ECHO
|
|
|
|
|
|
|
|
if [ "$USERNAME" != "$CREDUSER" -o "$PASSWORD" != "$CREDPASS" ]; then
|
|
|
|
$ECHO "Authentication failed" >&2
|
|
|
|
exit -1
|
|
|
|
fi
|
|
|
|
|
2008-08-17 21:28:11 +00:00
|
|
|
while $ECHO "$PROMPT\c"; read -r COMMAND; do
|
2008-01-27 12:00:08 +00:00
|
|
|
if [ "$COMMAND" = "exit" ]; then
|
|
|
|
break;
|
|
|
|
fi
|
|
|
|
$ECHO "executing $COMMAND"
|
|
|
|
done
|