Advertisement
Guest User

Untitled

a guest
Feb 18th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. public void runSSH(View v){
  2.  
  3. String command = "python /home/pi/hello.py";
  4. String userName = "pi";
  5. String password = "raspberry";
  6. String connectionIP = "192.168.137.27";
  7. SSHManager instance = new SSHManager(userName, password, connectionIP, "");
  8. String errorMessage = instance.connect();
  9.  
  10. if(errorMessage != null)
  11. {
  12. System.out.println(errorMessage);
  13. //fail();
  14. }
  15.  
  16. //String expResult = "FILE_NAMEn";
  17. // call sendCommand for each command and the output
  18. //(without prompts) is returned
  19. String result = instance.sendCommand(command);
  20.  
  21. TextView textfield = (TextView)findViewById(R.id.texttest);
  22. textfield.setText(result);
  23.  
  24. // close only after all commands are sent
  25. instance.close();
  26. //assertEquals(expResult, result);
  27.  
  28. }
  29.  
  30. public class SSHManager {
  31.  
  32.  
  33.  
  34.  
  35. private static final Logger LOGGER =
  36. Logger.getLogger(SSHManager.class.getName());
  37. private JSch jschSSHChannel;
  38. private String strUserName;
  39. private String strConnectionIP;
  40. private int intConnectionPort;
  41. private String strPassword;
  42. private Session sesConnection;
  43. private int intTimeOut;
  44.  
  45. private void doCommonConstructorActions(String userName,
  46. String password, String connectionIP, String knownHostsFileName)
  47. {
  48. jschSSHChannel = new JSch();
  49.  
  50. try
  51. {
  52. jschSSHChannel.setKnownHosts(knownHostsFileName);
  53. }
  54. catch(JSchException jschX)
  55. {
  56. logError(jschX.getMessage());
  57. }
  58.  
  59. strUserName = userName;
  60. strPassword = password;
  61. strConnectionIP = connectionIP;
  62. }
  63.  
  64. public SSHManager(String userName, String password,
  65. String connectionIP, String knownHostsFileName)
  66. {
  67. doCommonConstructorActions(userName, password,
  68. connectionIP, knownHostsFileName);
  69. intConnectionPort = 22;
  70. intTimeOut = 60000;
  71. }
  72.  
  73. public SSHManager(String userName, String password, String connectionIP,
  74. String knownHostsFileName, int connectionPort)
  75. {
  76. doCommonConstructorActions(userName, password, connectionIP,
  77. knownHostsFileName);
  78. intConnectionPort = connectionPort;
  79. intTimeOut = 60000;
  80. }
  81.  
  82. public SSHManager(String userName, String password, String connectionIP,
  83. String knownHostsFileName, int connectionPort, int timeOutMilliseconds)
  84. {
  85. doCommonConstructorActions(userName, password, connectionIP,
  86. knownHostsFileName);
  87. intConnectionPort = connectionPort;
  88. intTimeOut = timeOutMilliseconds;
  89. }
  90.  
  91. public String connect()
  92. {
  93. String errorMessage = null;
  94.  
  95. try
  96. {
  97. sesConnection = jschSSHChannel.getSession(strUserName,
  98. strConnectionIP, intConnectionPort);
  99. sesConnection.setPassword(strPassword);
  100. // UNCOMMENT THIS FOR TESTING PURPOSES, BUT DO NOT USE IN PRODUCTION
  101. //sesConnection.setConfig("StrictHostKeyChecking", "no");
  102. sesConnection.connect(intTimeOut);
  103. }
  104. catch(JSchException jschX)
  105. {
  106. errorMessage = jschX.getMessage();
  107. }
  108.  
  109. return errorMessage;
  110. }
  111.  
  112. private String logError(String errorMessage)
  113. {
  114. if(errorMessage != null)
  115. {
  116. LOGGER.log(Level.SEVERE, "{0}:{1} - {2}",
  117. new Object[]{strConnectionIP, intConnectionPort, errorMessage});
  118. }
  119.  
  120. return errorMessage;
  121. }
  122.  
  123. private String logWarning(String warnMessage)
  124. {
  125. if(warnMessage != null)
  126. {
  127. LOGGER.log(Level.WARNING, "{0}:{1} - {2}",
  128. new Object[]{strConnectionIP, intConnectionPort, warnMessage});
  129. }
  130.  
  131. return warnMessage;
  132. }
  133.  
  134. public String sendCommand(String command)
  135. {
  136. StringBuilder outputBuffer = new StringBuilder();
  137.  
  138. try
  139. {
  140. Channel channel = sesConnection.openChannel("exec");
  141. ((ChannelExec)channel).setCommand(command);
  142. InputStream commandOutput = channel.getInputStream();
  143. channel.connect();
  144. int readByte = commandOutput.read();
  145.  
  146. while(readByte != 0xffffffff)
  147. {
  148. outputBuffer.append((char)readByte);
  149. readByte = commandOutput.read();
  150. }
  151.  
  152. channel.disconnect();
  153. }
  154. catch(IOException ioX)
  155. {
  156. logWarning(ioX.getMessage());
  157. return null;
  158. }
  159. catch(JSchException jschX)
  160. {
  161. logWarning(jschX.getMessage());
  162. return null;
  163. }
  164.  
  165. return outputBuffer.toString();
  166. }
  167.  
  168. public void close()
  169. {
  170. sesConnection.disconnect();
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement