WinSCP offers unique feature to execute command on remote server as with regular terminal client. However as it cannot implement the terminal fully, there are some limitations. Particularly, you cannot execute commands that require terminal emulation or user input. See below for technical details.
Basically the feature is supported only for SCP protocol. With SFTP you can still use the feature by opening separate shell session, which in fact takes place automatically for you. With FTP you can only execute FTP protocol commands. However some FTP servers have a command allowing execution of remote command, e.g.
SITE EXEC <command>. WebDAV and S3 protocols do not allow executing remote commands.
- How to Enter the Remote Command
- Automating Command Execution
- Custom Commands
- Technical Background of Terminal Limitations
You can enter the command on Console window (Commands > Open Terminal).
If you are using Commander interface you can also enter the command on command-line box below the panels.
If you want to have full featured terminal, you may find command Open in PuTTY useful.
If there is command you need to execute regularly and in particular if the command works with files, you can find custom commands useful.
WinSCP does not support commands that require terminal emulation or user input.
Terminal emulation cannot be implemented at all as it is not possible to combine terminal emulation and file transfers in the same session. The reason is that with terminal emulation control characters have special meaning that is interpreted by the server. On the other hand the same characters (bytes) have special meaning in the file transfer protocols or may be simply present in the (binary) files being transferred.
If you happen to try execute command requiring terminal emulation, it will typically refuse to run with error message like “Error opening terminal”, “No TTY available”, “stdin: is not a tty” or “Couldn’t open /dev/tty for reading”.
WinSCP may possibly support user input. However most commands requiring user input does that via terminal emulation features. If your command needs plain input without terminal emulation you can use input redirection like:
echo "some input" | command