[LTP] [PATCH v1] tst_test.sh: Add support for localhost ssh key setup
Wei Gao
wegao@suse.com
Tue Sep 24 12:15:32 CEST 2024
On Wed, Sep 18, 2024 at 01:46:30PM +0200, Martin Doucha wrote:
> Hi,
> this kind of configuration should be done by the test runner. LTP should not
> modify global system configuration unless doing so is a key part of the test
> scenario itself.
Will remove ssh configuration part to test runner.
>
> The test runner can also create an alias for the lftp command so that the
> test can call it using the old name.
Create an alias for lftp not enough since current code use parameter "-nv" which
not supported by lftp so following error will popup:
lftp: invalid option -- 'n'
Try `lftp --help' for more information
>
> On 18. 09. 24 12:03, Wei Gao via ltp wrote:
> > When RHOST=localhost, ssh@localhost will encounter error since
> > no correct setup for authorized_keys and known_hosts etc.
> >
> > Signed-off-by: Wei Gao <wegao@suse.com>
> > ---
> > testcases/lib/tst_test.sh | 32 +++++++++++++++++++++++++
> > testcases/network/tcp_cmds/ftp/ftp01.sh | 12 ++++++++--
> > 2 files changed, 42 insertions(+), 2 deletions(-)
> >
> > diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
> > index c19c30b76..6df16bd17 100644
> > --- a/testcases/lib/tst_test.sh
> > +++ b/testcases/lib/tst_test.sh
> > @@ -784,6 +784,34 @@ tst_run()
> > _tst_do_exit
> > }
> > +_tst_setup_localhost_ssh()
> > +{
> > + if [ -z "$TST_SSHD_CONFIG" ]; then
> > + TST_SSHD_CONFIG="/etc/ssh/sshd_config"
> > + fi
> > +
> > + if [ -z "$TST_SSH_DIR" ]; then
> > + TST_SSH_DIR="/root/.ssh/"
> > + fi
> > +
> > + if [ ! -e "$TST_SSHD_CONFIG" ]; then
> > + echo 'PermitRootLogin yes' >$TST_SSHD_CONFIG
> > + elif [ ! `grep "^PermitRootLogin *yes" $TST_SSHD_CONFIG | wc -l` -gt 0 ]; then
> > + echo 'PermitRootLogin yes' >>$TST_SSHD_CONFIG
> > + fi
> > +
> > + if [ ! -e "$TST_SSH_DIR/id_rsa" ]; then
> > + ssh-keygen -q -N "" -t rsa -b 4096 -f $TST_SSH_DIR/id_rsa
> > + fi
> > +
> > + if [ -e "$TST_SSH_DIR/id_rsa.pub" ]; then
> > + cat $TST_SSH_DIR/id_rsa.pub >> $TST_SSH_DIR/authorized_keys
> > + ssh-keyscan -H localhost >> $TST_SSH_DIR/known_hosts
> > + fi
> > +
> > + systemctl restart sshd
> > +}
> > +
> > _tst_run_iterations()
> > {
> > local _tst_i=$TST_ITERATIONS
> > @@ -910,6 +938,10 @@ if [ -z "$TST_NO_DEFAULT_RUN" ]; then
> > tst_res TINFO "Running: $(basename $0) $TST_ARGS"
> > tst_res TINFO "Tested kernel: $(uname -a)"
> > + if [ "$TST_NEEDS_LOCALHOST_SSH" = 1 ]; then
> > + _tst_setup_localhost_ssh
> > + fi
> > +
> > OPTIND=1
> > while getopts ":hi:$TST_OPTS" _tst_name $TST_ARGS; do
> > diff --git a/testcases/network/tcp_cmds/ftp/ftp01.sh b/testcases/network/tcp_cmds/ftp/ftp01.sh
> > index 53d1eec53..8ec7f4fca 100755
> > --- a/testcases/network/tcp_cmds/ftp/ftp01.sh
> > +++ b/testcases/network/tcp_cmds/ftp/ftp01.sh
> > @@ -4,13 +4,21 @@
> > # Copyright (c) 2003 Manoj Iyer <manjo@mail.utexas.edu>
> > # Copyright (c) 2001 Robbie Williamson <robbiew@us.ibm.com>
> > +TST_SETUP=setup
> > TST_TESTFUNC=do_test
> > TST_CNT=4
> > TST_NEEDS_CMDS='awk ftp'
> > TST_NEEDS_TMPDIR=1
> > +TST_NEEDS_LOCALHOST_SSH=1
> > RUSER="${RUSER:-root}"
> > RHOST="${RHOST:-localhost}"
> > +FTP_CLIENT_CMD="ftp -nv"
> > +
> > +setup()
> > +{
> > + grep -q 'sles' /etc/os-release && FTP_CLIENT_CMD='lftp'
> > +}
> > do_test()
> > {
> > @@ -41,7 +49,7 @@ test_get()
> > echo cd $TST_NET_DATAROOT
> > echo get $file
> > echo quit
> > - } | ftp -nv $RHOST
> > + } | $FTP_CLIENT_CMD $RHOST
> > sum1="$(ls -l $file | awk '{print $5}')"
> > sum2="$(ls -l $TST_NET_DATAROOT/$file | awk '{print $5}')"
> > @@ -62,7 +70,7 @@ test_put()
> > echo cd $TST_TMPDIR
> > echo put $file
> > echo quit
> > - } | ftp -nv $RHOST
> > + } | $FTP_CLIENT_CMD $RHOST
> > sum1="$(tst_rhost_run -c "sum $TST_TMPDIR/$file" -s | awk '{print $1}')"
> > sum2="$(sum $TST_NET_DATAROOT/$file | awk '{print $1}')"
>
> --
> Martin Doucha mdoucha@suse.cz
> SW Quality Engineer
> SUSE LINUX, s.r.o.
> CORSO IIa
> Krizikova 148/34
> 186 00 Prague 8
> Czech Republic
>
More information about the ltp
mailing list