Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void runSSH(View v){
- String command = "python /home/pi/hello.py";
- String userName = "pi";
- String password = "raspberry";
- String connectionIP = "192.168.137.27";
- SSHManager instance = new SSHManager(userName, password, connectionIP, "");
- String errorMessage = instance.connect();
- if(errorMessage != null)
- {
- System.out.println(errorMessage);
- //fail();
- }
- //String expResult = "FILE_NAMEn";
- // call sendCommand for each command and the output
- //(without prompts) is returned
- String result = instance.sendCommand(command);
- TextView textfield = (TextView)findViewById(R.id.texttest);
- textfield.setText(result);
- // close only after all commands are sent
- instance.close();
- //assertEquals(expResult, result);
- }
- public class SSHManager {
- private static final Logger LOGGER =
- Logger.getLogger(SSHManager.class.getName());
- private JSch jschSSHChannel;
- private String strUserName;
- private String strConnectionIP;
- private int intConnectionPort;
- private String strPassword;
- private Session sesConnection;
- private int intTimeOut;
- private void doCommonConstructorActions(String userName,
- String password, String connectionIP, String knownHostsFileName)
- {
- jschSSHChannel = new JSch();
- try
- {
- jschSSHChannel.setKnownHosts(knownHostsFileName);
- }
- catch(JSchException jschX)
- {
- logError(jschX.getMessage());
- }
- strUserName = userName;
- strPassword = password;
- strConnectionIP = connectionIP;
- }
- public SSHManager(String userName, String password,
- String connectionIP, String knownHostsFileName)
- {
- doCommonConstructorActions(userName, password,
- connectionIP, knownHostsFileName);
- intConnectionPort = 22;
- intTimeOut = 60000;
- }
- public SSHManager(String userName, String password, String connectionIP,
- String knownHostsFileName, int connectionPort)
- {
- doCommonConstructorActions(userName, password, connectionIP,
- knownHostsFileName);
- intConnectionPort = connectionPort;
- intTimeOut = 60000;
- }
- public SSHManager(String userName, String password, String connectionIP,
- String knownHostsFileName, int connectionPort, int timeOutMilliseconds)
- {
- doCommonConstructorActions(userName, password, connectionIP,
- knownHostsFileName);
- intConnectionPort = connectionPort;
- intTimeOut = timeOutMilliseconds;
- }
- public String connect()
- {
- String errorMessage = null;
- try
- {
- sesConnection = jschSSHChannel.getSession(strUserName,
- strConnectionIP, intConnectionPort);
- sesConnection.setPassword(strPassword);
- // UNCOMMENT THIS FOR TESTING PURPOSES, BUT DO NOT USE IN PRODUCTION
- //sesConnection.setConfig("StrictHostKeyChecking", "no");
- sesConnection.connect(intTimeOut);
- }
- catch(JSchException jschX)
- {
- errorMessage = jschX.getMessage();
- }
- return errorMessage;
- }
- private String logError(String errorMessage)
- {
- if(errorMessage != null)
- {
- LOGGER.log(Level.SEVERE, "{0}:{1} - {2}",
- new Object[]{strConnectionIP, intConnectionPort, errorMessage});
- }
- return errorMessage;
- }
- private String logWarning(String warnMessage)
- {
- if(warnMessage != null)
- {
- LOGGER.log(Level.WARNING, "{0}:{1} - {2}",
- new Object[]{strConnectionIP, intConnectionPort, warnMessage});
- }
- return warnMessage;
- }
- public String sendCommand(String command)
- {
- StringBuilder outputBuffer = new StringBuilder();
- try
- {
- Channel channel = sesConnection.openChannel("exec");
- ((ChannelExec)channel).setCommand(command);
- InputStream commandOutput = channel.getInputStream();
- channel.connect();
- int readByte = commandOutput.read();
- while(readByte != 0xffffffff)
- {
- outputBuffer.append((char)readByte);
- readByte = commandOutput.read();
- }
- channel.disconnect();
- }
- catch(IOException ioX)
- {
- logWarning(ioX.getMessage());
- return null;
- }
- catch(JSchException jschX)
- {
- logWarning(jschX.getMessage());
- return null;
- }
- return outputBuffer.toString();
- }
- public void close()
- {
- sesConnection.disconnect();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement