当前位置: 代码迷 >> VxWorks >> telnet xworks,该怎么处理
  详细解决方案

telnet xworks,该怎么处理

热度:3326   发布时间:2013-02-26 00:00:00.0
telnet xworks
问题如下:
用telnet登陆成功后,如果执行多条命令,比如,先执行i命令,察看任务状态,再执行tt xxxx命令
查看函数调用过程。要使这些命令依次执行。
简单来说就是如何用telnet一次执行多条命令。请大家帮忙,谢谢!
我是在后台用java来实现的。
过程如下:
1,
//首先利用Socket连接(过程有些省略)
Socket mSocket = new Socket();
mSocket.connect(xx,xx);
mServerOutput = mSocket.getOutputStream();
mServerInput = new BufferedInputStream(mSocket.getInputStream());
2,
//成功连接后,输入用户名和密码进行登陆
send( new ByteArrayInputStream( ( loginID + "\r\n").getBytes() ), mServerOutput );
send( new ByteArrayInputStream( ( loginPassword + "\r\n" ).getBytes() ), mServerOutput );  
//send方法:将字符串写进输出流
private void send(InputStream in, OutputStream out) throws IOException
{
  byte[] buff = new byte[1024];
  try {
  int n = in.read(buff);
  out.write(buff, 0, n);
  }catch(IOException e){
  throw e;
  }
}
3,现在需要做的事情:利用telnet向连接上的机器发送命令
首先,需要通过“i”命令察看任务状态:
然后通过”tt”来追溯函数调用过程:
send( new ByteArrayInputStream( ( "i" + "\r\n" ).getBytes() ), mServerOutput);
send( new ByteArrayInputStream( ( "tt \"RecTaskF\"" + "\r\n" ).getBytes() ), mServerOutput);
//send( new ByteArrayInputStream( ( "tt \"RecTaskF_RcgTask2\"" + "\r\n" ).getBytes() ), mServerOutput);
//send( new ByteArrayInputStream( ( "tt \"RecTaskF_RcgTask1\"" + "\r\n" K ).getBytes() ), mServerOutput);
//send( new ByteArrayInputStream( ( "tt \"RecTaskR\"" + "\r\n" ).getBytes() ), mServerOutput);
问题:在这里我测试过如果只发送i和一个tt命令,能正常发送过去。
如果再连续发送几个tt命令,则好像不能正常发送过去。
也就是将上面注释的代码不注释的话就有问题。
也许我的思路有问题,但是目的只有一个:成功利用telnet连接后,相继发送i命令和n个tt命令
请大家帮忙看看,有好的思路或者建议请不吝赐教,十分感谢。


------解决方案--------------------------------------------------------
send之间加点延时试试尼。
------解决方案--------------------------------------------------------
shell命令可以通过文本文件直接导入进来批量执行的。
记得tornado trainning workshop中好像就有例子的,或者是T2_lab实验教材,记不太清了
  相关解决方案