[BUG?] sftp is echoing back prompt and commands in batch mode

Vincenzo Romano vincenzo.romano at notorand.it
Fri Nov 2 22:25:22 AEDT 2018


Short description: All comands sent to server in batch mode are being
echoed back along with prompt.
Software Version: "OpenSSH_7.9p1, OpenSSL 1.1.1  11 Sep 2018" (as
printed by ssh -V)
Server and client systems: ArchLinux x86_64 fully updated as of 2018-11-02.

## How to reproduce

Provided that you have proper SSH key authentication in place, from
command line run:
echo "dir /var" | sftp -b - 0

## Expected output

/var/backups    /var/cache      /var/lib        /var/local      /var/lock
/var/log        /var/mail       /var/opt        /var/puppet     /var/run
/var/spool      /var/tmp        /var/www

## Actual output

sftp> dir /var
/var/backups    /var/cache      /var/lib        /var/local      /var/lock
/var/log        /var/mail       /var/opt        /var/puppet     /var/run
/var/spool      /var/tmp        /var/www

Please note the first line is the server prompt followed by the command echo.

## Workaround

Expunge the first line from the client output
echo "dir /var" | sftp -b - 0 | tail -n +2

## Notes
Batch mode is meant for script automation, not human operations, so
echoing the prompt and the commands doesn't make any sense and creates
problems while processing the output.
A possible solution that's also backward compatible with all scripts
using batch mode is to allow for a special prefix character to
commands to avoid any echoing, just like the "-" is used to avoid a
single failing command to terminate the client. Something like "@" or
"#" would be ok IMHO.

-- 
Vincenzo Romano - NotOrAnd.IT
Information Technologies
--
NON QVIETIS MARIBVS NAVTA PERITVS


More information about the openssh-unix-dev mailing list