[ 
https://issues.apache.org/jira/browse/SSHD-1317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17656582#comment-17656582
 ] 

dgü commented on SSHD-1317:
---------------------------

Hello!

Using _echo_ command may be useful if shell builtin _echo_ takes precedence 
over {_}/bin/echo{_},etc. or they work same.

This may be a pseudo code to find escape character:
{code:java}
char escapeChar;
String commandOutput = execute("echo ^^``\\\\"); 

switch (commandOutput) {
 case "^``\\\\"   :      //for CMD
                         escapeChar = '^';
                         break;
 case "^^`\\\\"   :      //for PowerShell
                         escapeChar = '`';
                         break;
case "^^``\\"     :      //for sh
                         escapeChar = '\\';
                         break;
 default          :      //not found
                         escapeChar = 0;
                         break;
}

After escape character found, quote character can be found too.

This may be a pseudo code to find quote character:

boolean isQuoteChar(char pQuoteChar, char pEscapeChar} {

   String escapeString =          
   String.valueOf(pEscapeChar)+String.valueOf(pEscapeChar);
   String commandOutput = execute("echo " + 
   pQuoteChar+escapeString+pQuoteChar);

   if (commandOutput.contains(escapeString)) {
     // escape chracter is preserved. 
     return true;
   } else {
     // escape chracter is not preserved. 
     return false;
   }
}
{code}
I'm not a shell expert. If you see an error, please let me know.

Thanks!

> Finding default shell and its escape, quote characters
> ------------------------------------------------------
>
>                 Key: SSHD-1317
>                 URL: https://issues.apache.org/jira/browse/SSHD-1317
>             Project: MINA SSHD
>          Issue Type: Question
>            Reporter: dgü
>            Priority: Major
>
> Hello!
> I execute remote commands by exec channel. Arguments of the commands may 
> include shell ({_}sh{_},{_}cmd{_},...) special characters(ie: _^_ for 
> {_}cmd{_}). These special characters may work different on different shells. 
> So, I must escape or quote them.
> is it possible to find the followings by SSHD ? 
>  * Default shell of SSH server
>  * Escape character of shell
>  * Quote character of shell
> Thanks in advance!



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to