當前位置: 首頁>>代碼示例>>Java>>正文


Java ChannelExec.setOutputStream方法代碼示例

本文整理匯總了Java中com.jcraft.jsch.ChannelExec.setOutputStream方法的典型用法代碼示例。如果您正苦於以下問題:Java ChannelExec.setOutputStream方法的具體用法?Java ChannelExec.setOutputStream怎麽用?Java ChannelExec.setOutputStream使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.jcraft.jsch.ChannelExec的用法示例。


在下文中一共展示了ChannelExec.setOutputStream方法的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: createTCPProxy

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
private void createTCPProxy() {
	try {
		final String cleanCommand = String.format("sudo docker ps -a | grep 'hours ago' | awk '{print $1}' | xargs --no-run-if-empty sudo docker rm",
				containerName,
				this.targetHost,
				this.targetPort,
				sourceIPs,
				ImageRegistry.get().tcpProxy());
		LOGGER.info("Establishing SSH shell");
		ssh = SshUtil.getInstance()
				.createSshSession(TestConfiguration.proxyHostUsername(), getProxyHost());
		ssh.connect();
		LOGGER.debug("Connected to ssh console");

		final ChannelExec cleanChannel = (ChannelExec) ssh.openChannel("exec");
		cleanChannel.setPty(true);
		cleanChannel.setCommand(cleanCommand);
		cleanChannel.setInputStream(null);
		cleanChannel.setOutputStream(System.err);

		LOGGER.debug("Executing command: '{}'", cleanCommand);
		cleanChannel.connect();
		cleanChannel.disconnect();

		final String command = String.format("sudo docker run -it --name %s --net=host --rm -e AB_OFF=true -e TARGET_HOST=%s -e TARGET_PORT=%s -e TARGET_VIA=%s %s",
				containerName,
				this.targetHost,
				this.targetPort,
				sourceIPs,
				ImageRegistry.get().tcpProxy());
		LOGGER.info("Establishing SSH shell");
		ssh = SshUtil.getInstance()
				.createSshSession(TestConfiguration.proxyHostUsername(), getProxyHost());
		ssh.connect();
		LOGGER.debug("Connected to ssh console");

		final ChannelExec channel = (ChannelExec) ssh.openChannel("exec");
		channel.setPty(true);
		channel.setCommand(command);
		channel.setInputStream(null);
		channel.setOutputStream(System.err);

		LOGGER.debug("Executing command: '{}'", command);
		channel.connect();
		final LineIterator li = IOUtils.lineIterator(new InputStreamReader(channel.getInputStream()));
		final Pattern portLine = Pattern.compile(".*Listening on port ([0-9]*).*$");
		listenPort = 0;
		while (li.hasNext()) {
			final String line = li.next();
			LOGGER.trace("Shell line: {}", line);
			final Matcher m = portLine.matcher(line);
			if (m.matches()) {
				listenPort = Integer.parseInt(m.group(1));
				LOGGER.info("Connection listening on port {}", listenPort);
				break;
			}
		}
		channel.disconnect();
	} catch (final JSchException | IOException e) {
		LOGGER.debug("Error in creating SSH connection to proxy host", e);
		throw new IllegalStateException("Cannot open SSH connection", e);
	}
}
 
開發者ID:xtf-cz,項目名稱:xtf,代碼行數:64,代碼來源:ProxiedConnectionManager.java

示例2: runJavaApp

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
/**
 * Runs that java app with the specified command and then takes the console output from target to host machine
 *
 * @param path
 * @param cmd
 * @throws IOException
 */
private void runJavaApp(@NotNull final String path, @NotNull final String cmd) throws IOException, RuntimeConfigurationException {
    consoleView.print(NEW_LINE + EmbeddedLinuxJVMBundle.getString("pi.deployment.build") + NEW_LINE + NEW_LINE, ConsoleViewContentType.SYSTEM_OUTPUT);
    Session session = connect(ssh.get());
    consoleView.setSession(session);
    try {
        ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
        channelExec.setOutputStream(System.out, true);
        channelExec.setErrStream(System.err, true);
        List<String> commands = Arrays.asList(
                String.format("%s kill -9 $(ps -efww | grep \"%s\"| grep -v grep | tr -s \" \"| cut -d\" \" -f2)", params.isRunAsRoot() ? "sudo" : "", params.getMainclass()),
                String.format("cd %s", path),
                String.format("tar -xvf %s.tar", consoleView.getProject().getName()),
                "rm *.tar",
                cmd);
        for (String command : commands) {
            consoleView.print(EmbeddedLinuxJVMBundle.getString("pi.deployment.command") + command + NEW_LINE, ConsoleViewContentType.SYSTEM_OUTPUT);
        }
        channelExec.setCommand(LinuxCommand.builder().commands(commands).build().toString());
        channelExec.connect();
        checkOnProcess(channelExec);
    } catch (JSchException e) {
        setErrorOnUI(e.getMessage());
    }
}
 
開發者ID:asebak,項目名稱:embeddedlinux-jvmdebugger-intellij,代碼行數:32,代碼來源:SSHHandlerTarget.java

示例3: exec

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
@Override
public int exec() throws IOException {
    try {
        final ChannelExec channel = ChannelExec.class.cast(
            this.session.openChannel("exec")
        );
        channel.setErrStream(this.stderr, false);
        channel.setOutputStream(this.stdout, false);
        channel.setInputStream(this.stdin, false);
        channel.setCommand(this.command);
        channel.connect();
        Logger.info(this, "$ %s", this.command);
        return this.exec(channel);
    } catch (final JSchException ex) {
        throw new IOException(ex);
    } finally {
        this.session.disconnect();
    }
}
 
開發者ID:jcabi,項目名稱:jcabi-ssh,代碼行數:20,代碼來源:Execution.java

示例4: executeCommand

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
public int executeCommand(boolean setPty, String command, CommandResultConsumer consumer) {
	Session ssh = SshUtil.getInstance().createSshSession(username, hostname);
	int resultCode = 255;

	try {
		ssh.connect();
		LOGGER.debug("Connected to ssh console");
		ChannelExec channel = (ChannelExec) ssh.openChannel("exec");
		channel.setPty(setPty);
		channel.setCommand(command);
		channel.setInputStream(null);
		channel.setOutputStream(System.err);

		LOGGER.debug("Executing command: '{}'", command);
		channel.connect();
		try {
			if (consumer != null) {
				consumer.consume(channel.getInputStream());
			}
		} catch (IOException ex) {
			throw new RuntimeException("Unable to read console output", ex);
		} finally {
			channel.disconnect();
		}
		resultCode = channel.getExitStatus();
	} catch (JSchException x) {
		LOGGER.error("Error SSH to " + username + "@" + hostname, x);
	} finally {
		ssh.disconnect();
	}

	return resultCode;
}
 
開發者ID:xtf-cz,項目名稱:xtf,代碼行數:34,代碼來源:OpenShiftNode.java

示例5: run

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
@Override
public void run() {
    TaskStage stage = TaskStage.FINISHED;
    Map<String, String> commandResponse = new HashMap<>();

    Session session = null;
    try {
        JSch jsch = new JSch();
        session = jsch.getSession(this.auth.userEmail, this.state.host,
                this.state.port);

        jsch.addIdentity("KeyPair",
                EncryptionUtils.decrypt(this.auth.privateKey).getBytes(), null, null);
        java.util.Properties config = new java.util.Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);

        session.connect();

        for (String cmd : this.state.commands) {
            // Create a channel for each command.
            ChannelExec channel = (ChannelExec) session
                    .openChannel("exec");
            channel.setCommand(cmd);

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            channel.setOutputStream(out);
            channel.setErrStream(out);

            channel.connect();

            while (!channel.isClosed()) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                }
            }

            // add command output/err to response map.
            commandResponse.put(cmd, out.toString());
            int exitStatus = channel.getExitStatus();
            channel.disconnect();

            if (exitStatus != 0) {
                // last command failed, sendSelfPatch the task.
                stage = TaskStage.FAILED;
                break;
            }
        }

        // patch task state
        sendSelfPatch(this.state, stage, commandResponse, null);

    } catch (Throwable t) {
        fail(this.state, t);
        return;
    } finally {
        if (session != null) {
            session.disconnect();
        }
    }
}
 
開發者ID:vmware,項目名稱:photon-model,代碼行數:63,代碼來源:SshCommandTaskService.java

示例6: sessionConnectGenerateChannel

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
/**
  * Session connect generate channel.
  *
  * @param session
  *            the session
  * @return the channel
  * @throws JSchException
  *             the j sch exception
  */
 public Channel sessionConnectGenerateChannel(Session session)
         throws JSchException {
 	// set timeout
     session.connect(sshMeta.getSshConnectionTimeoutMillis());
     
     ChannelExec channel = (ChannelExec) session.openChannel("exec");
     channel.setCommand(sshMeta.getCommandLine());

     // if run as super user, assuming the input stream expecting a password
     if (sshMeta.isRunAsSuperUser()) {
     	try {
             channel.setInputStream(null, true);

             OutputStream out = channel.getOutputStream();
             channel.setOutputStream(System.out, true);
             channel.setExtOutputStream(System.err, true);
             channel.setPty(true);
             channel.connect();
             
          out.write((sshMeta.getPassword()+"\n").getBytes());
          out.flush();
} catch (IOException e) {
	logger.error("error in sessionConnectGenerateChannel for super user", e);
}
     } else {
     	channel.setInputStream(null);
     	channel.connect();
     }

     return channel;

 }
 
開發者ID:eBay,項目名稱:parallec,代碼行數:42,代碼來源:SshProvider.java

示例7: sendCommand

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
private void sendCommand(int idConnection, String command, CallbackContext callbackContext) throws JSchException, IOException, JSONException {
  Session session = this.getSession(idConnection);
  ChannelExec channel = (ChannelExec)session.openChannel("exec");
  channel.setCommand(command);

  ByteArrayOutputStream output = new ByteArrayOutputStream();
  channel.setOutputStream(output);

  channel.connect();

  while (!channel.isClosed()) {
    try {
      Thread.sleep(25);
    } catch (Exception e) {
      callbackContext.error(e.toString());
      channel.disconnect();
      return;
    }
  }

  JSONObject ret = new JSONObject();

  ret.put("text", output.toString());
  ret.put("status", channel.getExitStatus());

  callbackContext.success(ret);

  channel.disconnect();
}
 
開發者ID:UWNetworksLab,項目名稱:colony,代碼行數:30,代碼來源:Ssh.java

示例8: playGame

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
public void playGame(final Context con, final String gameName) {
    Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                // SSH Channel
                ChannelExec channel = (ChannelExec) session.openChannel("exec");
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                channel.setOutputStream(baos);

                // Execute command
                channel.setCommand(buildPlayGameCommand(con, gameName));
                channel.connect();

                InputStream in = channel.getInputStream();
                byte[] tmp = new byte[1024];
                String tmpString = "";
                while (true) {
                    while (in.available() > 0) {
                        int i = in.read(tmp, 0, 1024);
                        if (i < 0) break;
                        tmpString = tmpString+new String(tmp, 0, i);
                        System.out.print(new String(tmp, 0, i));

                        if(tmpString.contains("input connection")){
                            SSHBus.post(new GameLoadingEvent(true));
                        } else {
                            SSHBus.post(new GameLoadingEvent(tmpString));
                        }
                    }

                    if (channel.isClosed()) {
                        if (in.available() > 0) continue;
                        System.out.println("exit-status: " + channel.getExitStatus());
                        SSHBus.post(new GameLoadingEvent(true));

                        break;
                    }
                    try {
                        Thread.sleep(500);
                    } catch (Exception ee) {
                    }
                }
                channel.disconnect();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    };

    thread.start();
}
 
開發者ID:ChrisOwen101,項目名稱:MoonlightEmbeddedController,代碼行數:53,代碼來源:SSHManager.java

示例9: doesLimelightExist

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
public void doesLimelightExist(final Context con, final Device device) {
    this.device = device;

    Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                // SSH Channel
                ChannelExec channel = (ChannelExec) session.openChannel("exec");
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                channel.setOutputStream(baos);

                // Execute command
                channel.setCommand("[ -f "+ device.directory  +"/limelight.jar ] && echo \"yes\" || echo \"no\"");
                channel.connect();

                InputStream in = channel.getInputStream();
                byte[] tmp = new byte[1024];
                String tmpString = "";
                while (true) {
                    while (in.available() > 0) {
                        int i = in.read(tmp, 0, 1024);
                        if (i < 0) break;
                        tmpString = tmpString+new String(tmp, 0, i);
                        System.out.print(new String(tmp, 0, i));
                    }

                    if (channel.isClosed()) {
                        if (in.available() > 0) continue;
                        System.out.println("exit-status: " + channel.getExitStatus());

                        if(tmpString.contains("yes")){
                            dispatchEventBus(con,new LimelightExistsEvent(true));
                        } else {
                            dispatchEventBus(con,new LimelightExistsEvent(false));
                        }

                        break;
                    }
                    try {
                        Thread.sleep(500);
                    } catch (Exception ee) {
                    }
                }
                channel.disconnect();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    };

    thread.start();
}
 
開發者ID:ChrisOwen101,項目名稱:MoonlightEmbeddedController,代碼行數:54,代碼來源:SSHManager.java

示例10: getGames

import com.jcraft.jsch.ChannelExec; //導入方法依賴的package包/類
public void getGames(final Context con) {
    Thread thread = new Thread() {
        @Override
        public void run() {
            try {
                // SSH Channel
                ChannelExec channel = (ChannelExec) session.openChannel("exec");
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                channel.setOutputStream(baos);

                // Execute command
                channel.setCommand("cd " + device.directory + "; java -jar limelight.jar list " + device.hostIP);
                channel.connect();

                boolean gamesIncoming = false;

                ArrayList<String> gameNames = new ArrayList<>();

                InputStream in = channel.getInputStream();
                byte[] tmp = new byte[1024];
                while (true) {
                    while (in.available() > 0) {
                        int i = in.read(tmp, 0, 1024);
                        if (i < 0) break;

                        String tmpString = new String(tmp, 0, i);
                        System.out.println(tmpString);

                        if(gamesIncoming){
                            gameNames.add(tmpString);
                        }

                        if(tmpString.contains("Search apps")){
                            gamesIncoming = true;
                        }
                    }

                    if (channel.isClosed()) {
                        if (in.available() > 0) continue;
                        System.out.println("exit-status: " + channel.getExitStatus());

                        dispatchEventBus(con, new GotGamesEvent(gameNames));
                        break;
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (Exception ee) {
                    }
                }
                channel.disconnect();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    };

    thread.start();
}
 
開發者ID:ChrisOwen101,項目名稱:MoonlightEmbeddedController,代碼行數:59,代碼來源:SSHManager.java


注:本文中的com.jcraft.jsch.ChannelExec.setOutputStream方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。