[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