繁体   English   中英

在Java中将命令(Jsch)发送到SSH服务器时,如何转义双引号而不导致“ quot”?

[英]How do I escape double quotes and NOT get “quot” when sending a command (Jsch) to an SSH server in Java?

我在这里想尽办法找出一些简单的方法。 在尝试了我在Google上阅读的几乎所有内容后,我仍然没有弄清楚。 我有一个使用JSCH连接到处理各种命令的SSH服务器的Android应用。 连接很好,我可以运行命令,但不能执行任何带有双引号的命令。 我想在远程计算机上运行的命令是:

start "" "scriptname" "variable"

注意:启动后必须输入“”。

在我的Android应用中,该命令以以下形式作为字符串发出(setCommand仅采用字符串或字节):

ChannelExec exec_channel=(ChannelExec) session.openChannel("exec");
BufferedReader in=new BufferedReader(new InputStreamReader(exec_channel.getInputStream()));
exec_channel.setCommand("start \"\" \"scriptname\" \"variable\"");

经过无数次尝试,例如以普通方式简单地将双引号转义(即\\“ \\”),将双引号存储在char中并调用它并将其存储在字节中,我仍然无法将接收SSH服务器发送到得到双引号。

在检查SSH服务器日志后,事实证明SSH服务器正在接收“”; 代替双引号。 如何在不将Android解析为“ quot”的情况下转义双引号 并在SSH服务器上正确接收?

我忘记了这个问题,只是记得要进行更新,因此请发布我的答案,以防其他人遇到问题。 不幸的是,我在实际问题上错了。 事实证明,我在Jsch中的“ setCommand”与URL编码一起正常工作,是正在运行的脚本出现了问题(即无法进行GUI更改)。 更新脚本以简单地回显文本文件后,事实证明该脚本实际上正在运行。

至于为什么我得到“” 在我的日志中,我认为这是问题所在,因为它是唯一在SSH日志中弹出的奇怪内容,但是我意识到这只是SSH服务器解析字符串而不是解释字符串的方式(其他SSH服务器在登录时将其以纯文本形式保留下来-应当如此)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM