关于Apache.commons.net中的telnet协议调用中输入cmd命令的长度的问题
2016-01-28 17:15
351 查看
之前做了一个项目,用到Apache封装的一个调用Windows系统telnet服务的jar包,开始在远程执行cmd命令的时候由于命令所带的参数比较短,没有出现什么问题,昨天在调用时突然就无法执行了,后来找各种原因,一一排除后猜测是执行的cmd命令参数长度太长,命令行无法执行
后来把远程调用的telnet输出流中的数据全读出来,一一对比后发现在第1024个字符处出现了一个乱码,是一个像“口”的乱码,这时就猜测是命令长度不得超过1k,也就是1024个字符。
后来查了下命令行的命令长度限制,资料如下
但是这里明显不是上述的那些情况,这里是1024个字符。不知道是不是Apache封装的时候设定的参数大小为1Kb
最后我的解决方法是:
先将完整的Command命令写入telnet并执行,这时输出流中会出现刚才输入的一长串命令,末尾是”more ?“ 其中在第1024个字符处是乱码,这里可以将流中的数据一一读出,只要读到‘?’就返回标记,将之前的Command去掉前1023个字符,将剩下的一串作为新的Command命令写入telnet并执行,然后反复循环上述操作。
代码简单就不贴了
后来把远程调用的telnet输出流中的数据全读出来,一一对比后发现在第1024个字符处出现了一个乱码,是一个像“口”的乱码,这时就猜测是命令长度不得超过1k,也就是1024个字符。
后来查了下命令行的命令长度限制,资料如下
标题: 命令行的长度限制是多少? 作者: Demon 链接: http://demon.tw/programming/what-is-the-command-line-length-limit.html 版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。 命令行的长度限制是多少?这取决于你问的是谁。 CreateProcess函数的最长命令行长度为32767字符。这个限制来自于UNICODE_STRING结构。 CreateProcess是创建进程的核心函数,所以如果你直接调用该函数,该限制是你唯一需要注意的地方。但是如果你通过其他方式间接调用CreateProcess,那么可能会有其他限制。 如果你使用的是CMD.EXE命令处理器,那么你同样受到CMD.EXE的长度限制,即8192的命令行长度限制。 如果你正在使用ShellExecute/Ex函数,那么你会受到ShellExecute/Ex函数的长度限制,即不得超过INTERNET_MAX_URL_LENGTH的命令行长度(大约2048字符)(如果你的操作系统为Windows 95,那么该限制为MAX_PATH) 谈到这儿,我还要提到另外一种限制:你所处环境的最大长度为32767字符。环境的最大值包括所有的变量名加上所有的值。
但是这里明显不是上述的那些情况,这里是1024个字符。不知道是不是Apache封装的时候设定的参数大小为1Kb
最后我的解决方法是:
先将完整的Command命令写入telnet并执行,这时输出流中会出现刚才输入的一长串命令,末尾是”more ?“ 其中在第1024个字符处是乱码,这里可以将流中的数据一一读出,只要读到‘?’就返回标记,将之前的Command去掉前1023个字符,将剩下的一串作为新的Command命令写入telnet并执行,然后反复循环上述操作。
代码简单就不贴了
相关文章推荐
- org.apache.log4j.Logger 详解 非常详细
- 数据验证框架 Apache BVal 简介
- 查看php和apache配置成功的方法
- How To Create a SSL Certificate on Apache for Ubuntu 14.04
- apache配置
- 【安装记录】Apache Ant 1.9.6安装与配置
- 让Apache Shiro保护你的应用
- javaweb学习总结(四十一)——Apache的DBUtils框架学习
- Apachetop 实时监测apache服务器运行状况简介
- 年终福利,PHP7+Apache2.4+MySQL5.6 源码编译安装,环境配置,搭建你自己的LAMP环境
- [Apache Kafka]Kafka运维
- Apache负载均衡与Spring Session
- Apache Shiro Web应用整合-配置
- Spring+struts联网正常,断网启动报错:java.net.UnknownHostException: struts.apache.org
- apache mod_proxy 扩展模块安装
- Apache POI使用详解(excel为主)
- 使用 Apache Phoenix and HBase 结合 saiku 做大数据查询分析
- RESTEasy通过ApacheAPI或JavaAPI进行TEXT、XML、JSON数据交换
- ClassNotFoundException: org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver
- Caused by: java.lang.ClassNotFoundException: org.apache.neethi.Policy