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


Java Channel.isClosed方法代碼示例

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


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

示例1: executeCommand

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
public void executeCommand(final String command) throws IOException { // Cliente SSH final
    JSch jsch = new JSch();
    Properties props = new Properties();
    props.put("StrictHostKeyChecking", "no");
    try {
        Session session = jsch.getSession(user, host, 22);
        session.setConfig(props);
        session.setPassword(password);
        session.connect();
        java.util.logging.Logger.getLogger(RemoteShell.class.getName())
                .log(Level.INFO, session.getServerVersion());

        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);
        // Daqui para baixo é somente para imprimir a saida
        channel.setInputStream(null);

        ((ChannelExec) channel).setErrStream(System.err);

        InputStream in = channel.getInputStream();

        channel.connect();

        byte[] tmp = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, 1024);
                if (i < 0) {
                    break;
                }
                System.out.print(new String(tmp, 0, i));
            }
            if (channel.isClosed()) {
                if (in.available() > 0) {
                    continue;
                }
                System.out
                        .println("exit-status: " + channel.getExitStatus());
                break;
            }
            try {
                Thread.sleep(1000);
            } catch (Exception ee) {
            }
        }
        channel.disconnect();
        session.disconnect();

    } catch (JSchException ex) {
        java.util.logging.Logger.getLogger(RemoteShell.class.getName())
                .log(Level.SEVERE, null, ex);
    }
}
 
開發者ID:nailtonvieira,項目名稱:pswot-cloud-java-spring-webapp,代碼行數:54,代碼來源:RemoteShell.java

示例2: connectAndExecute

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
public static String connectAndExecute(String user, String host, String password, String command1) {
	String CommandOutput = null;
	try {

		java.util.Properties config = new java.util.Properties();
		config.put("StrictHostKeyChecking", "no");
		JSch jsch = new JSch();

		Session session = jsch.getSession(user, host, 22);
		session.setPassword(password);
		session.setConfig(config);
		session.connect();
		// System.out.println("Connected");

		Channel channel = session.openChannel("exec");
		((ChannelExec) channel).setCommand(command1);
		channel.setInputStream(null);
		((ChannelExec) channel).setErrStream(System.err);

		InputStream in = channel.getInputStream();

		channel.connect();
		byte[] tmp = new byte[1024];
		while (true) {
			while (in.available() > 0) {
				int i = in.read(tmp, 0, 1024);

				if (i < 0)
					break;
				// System.out.print(new String(tmp, 0, i));
				CommandOutput = new String(tmp, 0, i);
			}

			if (channel.isClosed()) {
				// System.out.println("exit-status: " +
				// channel.getExitStatus());
				break;
			}
			try {
				Thread.sleep(1000);
			} catch (Exception ee) {
			}
		}
		channel.disconnect();
		session.disconnect();
		// System.out.println("DONE");

	} catch (Exception e) {
		e.printStackTrace();
	}
	return CommandOutput;

}
 
開發者ID:saiscode,項目名稱:kheera,代碼行數:54,代碼來源:SeleniumGridManager.java

示例3: testClose

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
private void testClose(TestContext context, Consumer<Term> closer) throws Exception {
  Async async = context.async();
  termHandler = term -> {
    term.closeHandler(v -> {
      async.complete();
    });
    closer.accept(term);
  };
  startShell();
  Session session = createSession("paulo", "secret", false);
  session.connect();
  Channel channel = session.openChannel("shell");
  channel.connect();
  while (channel.isClosed()) {
    Thread.sleep(10);
  }
}
 
開發者ID:vert-x3,項目名稱:vertx-shell,代碼行數:18,代碼來源:SSHServerTest.java

示例4: waitForChannelClosure

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * Blocks until the given channel is close or the timout is reached
 *
 * @param channel the channel to wait for
 * @param timoutInMs the timeout
 */
private static void waitForChannelClosure(Channel channel, long timoutInMs) {
    final long start = System.currentTimeMillis();
    final long until = start + timoutInMs;
    try {
        while (!channel.isClosed() && System.currentTimeMillis() < until) {
            Thread.sleep(CLOSURE_WAIT_INTERVAL);
        }
        logger.trace("Time waited for channel closure: " + (System.currentTimeMillis() - start));
    } catch (InterruptedException e) {
        logger.trace("Interrupted", e);
    }
    if (!channel.isClosed()) {
        logger.trace("Channel not closed in timely manner!");
    }
}
 
開發者ID:sonyxperiadev,項目名稱:gerrit-events,代碼行數:22,代碼來源:SshConnectionImpl.java

示例5: onOutput

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
public void onOutput(Channel channel) {
    try {
        StringBuffer pbsOutput = new StringBuffer("");
        InputStream inputStream =  channel.getInputStream();
        byte[] tmp = new byte[1024];
        do {
            while (inputStream.available() > 0) {
                int i = inputStream.read(tmp, 0, 1024);
                if (i < 0) break;
                pbsOutput.append(new String(tmp, 0, i));
            }
        } while (!channel.isClosed()) ;
        String output = pbsOutput.toString();
        this.setStdOutputString(output);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    }

}
 
開發者ID:apache,項目名稱:airavata,代碼行數:20,代碼來源:StandardOutReader.java

示例6: executeCommandNoResponse

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
public static void executeCommandNoResponse( Session sessionObj, String command )
    throws JSchException, IOException
{
    logger.debug( "Starting to execute command [" + maskedPasswordString( command ) + "]" );

    if ( sessionObj != null && command != null && !"".equals( command ) )
    {
        Channel channel = null;

        try
        {
            channel = sessionObj.openChannel( "exec" );
            ( (ChannelExec) channel ).setCommand( command );
            channel.setInputStream( null );
            ( (ChannelExec) channel ).setErrStream( System.err );
            channel.getInputStream();
            channel.connect();
            /* We do not care about whether the command succeeds or not */

            if ( channel.isClosed() && channel.getExitStatus() != 0 )
            {
                logger.debug( "Command exited with error code " + channel.getExitStatus() );
            }
        }
        catch ( Exception e )
        {
            logger.error( "Received exception during command execution", e );
        }
        finally
        {
            if ( channel != null && channel.isConnected() )
            {
                channel.disconnect();
            }
            logger.debug( "End of execution of command [" + maskedPasswordString( command ) + "]" );
        }
    }
}
 
開發者ID:vmware,項目名稱:OHMS,代碼行數:39,代碼來源:SshUtil.java

示例7: executeCommandNoResponse

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
public static void executeCommandNoResponse( Session sessionObj, String command )
    throws JSchException, IOException
{
    logger.debug( "Starting to execute command [" + command + "]" );

    if ( sessionObj != null && command != null && !"".equals( command ) )
    {
        Channel channel = null;

        try
        {
            channel = sessionObj.openChannel( "exec" );
            ( (ChannelExec) channel ).setCommand( command );
            channel.setInputStream( null );
            ( (ChannelExec) channel ).setErrStream( System.err );
            channel.getInputStream();
            channel.connect();
            /* We do not care about whether the command succeeds or not */

            if ( channel.isClosed() && channel.getExitStatus() != 0 )
            {
                logger.debug( "Command exited with error code " + channel.getExitStatus() );
            }
        }
        catch ( Exception e )
        {
            logger.error( "Received exception during command execution", e );
        }
        finally
        {
            if ( channel != null && channel.isConnected() )
            {
                channel.disconnect();
            }
            logger.debug( "End of execution of command [" + command + "]" );
        }
    }
}
 
開發者ID:vmware,項目名稱:OHMS,代碼行數:39,代碼來源:EsxiSshUtil.java

示例8: exec

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
@SneakyThrows
public static int exec(@Nonnull String host,
                       int port,
                       @Nonnull String username,
                       @Nonnull String password,
                       @Nonnull String cmd) {
    JSch jSch = new JSch();

    Session session = jSch.getSession(username, host, port);
    session.setPassword(password);
    java.util.Properties config = new java.util.Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();
    Channel channel = session.openChannel("exec");
    ((ChannelExec) channel).setCommand(cmd);
    ((ChannelExec) channel).setInputStream(null);
    ((ChannelExec) channel).setErrStream(System.err);
    InputStream inputStream = channel.getInputStream();
    channel.connect();

    log.info("# successful connect to server [{}:{}]", host, port);

    log.info("# exec cmd [{}]", cmd);

    StringBuilder sb = new StringBuilder();
    byte[] bytes = new byte[1024];
    int exitStatus;
    while (true) {
        while (inputStream.available() > 0) {
            int i = inputStream.read(bytes, 0, 1024);
            if (i < 0) {
                break;
            }
            sb.append(new String(bytes, 0, i, StandardCharsets.UTF_8));
        }
        if (channel.isClosed()) {
            if (inputStream.available() > 0) {
                continue;
            }
            exitStatus = channel.getExitStatus();
            break;
        }
        Thread.sleep(1000);
    }
    if (StringUtils.isNotEmpty(sb)) {
        log.info("# cmd-rs \n" + sb);
    }
    channel.disconnect();
    session.disconnect();

    log.info("# successful disconnect to server [{}:{}]", host, port);

    return exitStatus;
}
 
開發者ID:srarcbrsent,項目名稱:tc,代碼行數:56,代碼來源:TcSshBin.java

示例9: executeCommand

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
private void executeCommand(String command) throws JSchException, IOException, InterruptedException {
    connectIfNot();
    Channel channel = session.openChannel("exec");
    try {
        ((ChannelExec) channel).setCommand(command);
        ((ChannelExec) channel).setErrStream(System.err);
        ((ChannelExec) channel).setPty(true);
        ((ChannelExec) channel).setPtyType("vt100");
        channel.setInputStream(null);
        channel.setOutputStream(System.out);
        InputStream in = channel.getInputStream();
        logger.info("ssh exec command => {}", command);
        channel.connect();

        byte[] buffer = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(buffer, 0, 1024);
                if (i < 0) break;
                messageLogger.info(new String(buffer, 0, i, Charsets.UTF_8));
            }
            if (channel.isClosed()) {
                logger.info("ssh exec exit status => " + channel.getExitStatus());
                break;
            }

            Thread.sleep(1000);
        }

        if (channel.getExitStatus() != 0) {
            throw new JSchException("failed to run command, command=" + command);
        }
    } finally {
        channel.disconnect();
    }
}
 
開發者ID:neowu,項目名稱:cmn-project,代碼行數:37,代碼來源:SSH.java

示例10: runCommand

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * @param positiveExitCodes The exit codes to consider the command a success. This will normally be only 0, but in case of
 * f.ex. 'diff' 1 is also ok.
 */
public void runCommand(String server, String command, int commandTimeout, String quotes, int[] positiveExitCodes) 
        throws Exception {
    RemoteCommand remoteCommand = new RemoteCommand(server, command, quotes);

    log.info("Running JSch command: " + remoteCommand);
    
    
    BufferedReader inReader = null;
    BufferedReader errReader = null;
    JSch jsch = new JSch();
    Session session = jsch.getSession("test", TestEnvironment.DEPLOYMENT_SERVER);
    setupJSchIdentity(jsch);
    session.setConfig("StrictHostKeyChecking", "no");
    
    long startTime = System.currentTimeMillis();
    session.connect();
    Channel channel = session.openChannel("exec");
    ((ChannelExec) channel).setCommand(remoteCommand.commandAsString());
    channel.setInputStream(null);
    ((ChannelExec) channel).setErrStream(null);

    InputStream in = channel.getInputStream();
    InputStream err = ((ChannelExec) channel).getErrStream();

    channel.connect(1000);
    log.debug("Channel connected, command: " + remoteCommand.commandAsString());

    inReader = new BufferedReader(new InputStreamReader(in));
    errReader = new BufferedReader(new InputStreamReader(err));

    int numberOfSecondsWaiting = 0;
    int maxNumberOfSecondsToWait = 60*10;
    while (true) {
        if (channel.isClosed()) {
            log.info("Command finished in "
                    + (System.currentTimeMillis() - startTime) / 1000
                    + " seconds. " + "Exit code was "
                    + channel.getExitStatus());
            boolean errorOccured = true;
            for (int positiveExit:positiveExitCodes) {
                if (positiveExit == channel.getExitStatus()) {
                    errorOccured = false;
                    break;
                }
            }
            if (errorOccured || err.available() > 0) { 
                throw new RuntimeException("Failed to run command, exit code " + channel.getExitStatus());
            }
            break;
        } else if ( numberOfSecondsWaiting > maxNumberOfSecondsToWait) {
            log.info("Command not finished after " + maxNumberOfSecondsToWait + " seconds. " +
                    "Forcing disconnect.");
            channel.disconnect();
            break;
        }
        try {
            Thread.sleep(1000);

            String s;
            while ((s = inReader.readLine()) != null) {
                if (!s.trim().isEmpty()) log.debug("ssh: " + s);
            }
            while ((s = errReader.readLine()) != null) {
                if (!s.trim().isEmpty()) log.warn("ssh error: " + s);
            }
        } catch (InterruptedException ie) {
        }
    }
}
 
開發者ID:netarchivesuite,項目名稱:netarchivesuite-svngit-migration,代碼行數:74,代碼來源:TestEnvironmentManager.java

示例11: getChannel

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * Gets the channel.
 * 
 * @param session
 *            the session
 * @param command
 *            the command
 * @return the channel
 * @throws JSchException
 *             the j sch exception
 * @throws IOException
 *             Signals that an I/O exception has occurred.
 */
public static Channel getChannel(Session session, String command) throws JSchException, IOException {
	session.connect();
	LOGGER.debug("Session ["+session+"] connected");		
	Channel channel = session.openChannel("exec");

	((ChannelExec) channel).setCommand(command);
	channel.setInputStream(null);

	InputStream in = channel.getInputStream();

	channel.connect();
	((ChannelExec) channel).setErrStream(System.err);

	byte[] tmp = new byte[RemotingConstants.ONE_ZERO_TWO_FOUR];
	while (true) {
		while (in.available() > 0) {
			int i = in.read(tmp, 0, RemotingConstants.ONE_ZERO_TWO_FOUR);
			if (i < 0){
				break;
			}
		}
		if (channel.isClosed()) {
			break;
		}
	}
	LOGGER.debug("Channel connected, mode [exec]");
	return channel;
}
 
開發者ID:Impetus,項目名稱:jumbune,代碼行數:42,代碼來源:JschUtil.java

示例12: validateCommandExecution

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * This method validates the executed command
 * 
 * @param channel
 *            SSH channel
 * @param in
 *            input stream
 * @return Error message if any

 *             If any error occurred
 */
private static String validateCommandExecution(Channel channel, InputStream in) throws IOException, InterruptedException {
	StringBuilder sb = new StringBuilder();
	byte[] tmp = new byte[Constants.ONE_ZERO_TWO_FOUR];
	while (true) {
		while (in.available() > 0) {
			int i = in.read(tmp, 0,Constants.ONE_ZERO_TWO_FOUR);
			if (i < 0){
				break;
			}
			sb.append(new String(tmp, 0, i));
		}
		if (channel.isClosed()) {
			break;
		}
		Thread.sleep(Constants.THOUSAND);
	}
	return sb.toString();
}
 
開發者ID:Impetus,項目名稱:jumbune,代碼行數:30,代碼來源:SessionEstablisher.java

示例13: getRemoteHomePath

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
private String getRemoteHomePath() {
  final String getHomeCommand = "pwd";
  try {
    final Channel channel = this.remoteSession.openChannel("exec");
    ((ChannelExec) channel).setCommand(getHomeCommand);
    channel.setInputStream(null);
    final InputStream stdout = channel.getInputStream();
    channel.connect();

    byte[] tmp = new byte[1024];
    StringBuilder homePath = new StringBuilder();
    while (true) {
      while (stdout.available() > 0) {
        final int len = stdout.read(tmp, 0, 1024);
        if (len < 0) {
          break;
        }
        homePath = homePath.append(new String(tmp, 0, len, StandardCharsets.UTF_8));
      }
      if (channel.isClosed()) {
        if (stdout.available() > 0) {
          continue;
        }
        break;
      }
    }
    return homePath.toString().trim();
  } catch (final JSchException | IOException ex) {
    throw new RuntimeException("Unable to retrieve home directory from " +
        this.remoteHostName + " with the pwd command", ex);
  }
}
 
開發者ID:apache,項目名稱:reef,代碼行數:33,代碼來源:SshProcessContainer.java

示例14: execCmd

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * Execute command
 * @param host
 * @param user
 * @param passwd
 * @param cmd
 * @return String the reply of remote session
 */
public String execCmd (String host, String user, String passwd, String cmd){
    String replyy = "";
    String reply = null;
    try{
        JSch jsch=new JSch();
        Session session=jsch.getSession(user, host, 22);
        UserInfo ui = new MyUserInfo(passwd);
        session.setUserInfo(ui);
        session.setTimeout(600000);
        session.connect();
        Channel channel=session.openChannel("exec");
        ((ChannelExec)channel).setCommand(cmd);
        channel.setInputStream(null);
        InputStreamReader in = new InputStreamReader(channel.getInputStream());
        OutputStreamWriter out = new OutputStreamWriter(channel.getOutputStream());
        BufferedWriter bw = new BufferedWriter(out);
        BufferedReader br = new BufferedReader(in);
        channel.connect();
        while ((reply = br.readLine()) != null) {
            bw.write(reply);
            replyy=replyy+"\n"+reply;
            bw.flush();
            Thread.sleep(100);
        }
        while(true){
            if(channel.isClosed()){
                break;
            } try{
                Thread.sleep(1500);
            } catch(Exception ee){
            }
        }
        in.close();
        out.close();
        br.close();
        bw.close();
        channel.disconnect();
        session.disconnect();
    }
    catch(Exception e){
        log.error("ERROR , Possible no connection with : "+user+" "+passwd+ " "+host+"\n\t\t please check LAN and vpn connection or host");
    }
    return replyy;
}
 
開發者ID:GiannisPapadakis,項目名稱:seletest,代碼行數:53,代碼來源:SSHUtils.java

示例15: outputCommandSSH

import com.jcraft.jsch.Channel; //導入方法依賴的package包/類
/**
 * Execute SSH command and return output
 * @param username The ssh user
 * @param host The host to connect
 * @param key The ssh key
 * @param commandssh The command to launch
 * @return the output of the command
 */
public String outputCommandSSH(String username, String host, String key, String commandssh){
	String res = "";
	try{
	      JSch jsch=new JSch();
	      java.util.Properties config = new java.util.Properties();
	      config.put("StrictHostKeyChecking", "no"); //avoid host key checking

	      int SSH_port = 22; 
	      
	      jsch.addIdentity(key , "passphrase");

	      Session session=jsch.getSession(username, host, SSH_port); //SSH connection
	 
			if(new Configuration().Debug){
				System.out.println("Connection to "+host+" on the port "+SSH_port+" with key: "+key+" and username: "+username);
			}
	      
	      // username and passphrase will be given via UserInfo interface.
	      UserInfo ui=new MyUserInfo();
	      session.setUserInfo(ui);
	      session.setConfig(config);
	      session.connect();

	      Channel channel=session.openChannel("exec"); // open channel for exec command
	      ((ChannelExec)channel).setCommand(commandssh);

	      channel.setInputStream(null);

	      ((ChannelExec)channel).setErrStream(System.err);
		
	      InputStream in=channel.getInputStream();
		
	      channel.connect();
		
		/*
		 * get output ssh command launched
		 */
		byte[] tmp=new byte[1024];
		while(true){
			while(in.available()>0){
				int i=in.read(tmp, 0, 1024);
				if(i<0)break;
				res += new String(tmp, 0, i);
				//System.out.print(new String(tmp, 0, i));
			}
			if(channel.isClosed()){
				if(in.available()>0) continue; 
				if(new Configuration().Debug){
					System.out.println("exit-status: "+channel.getExitStatus());
				}
				break;
			}
			try{Thread.sleep(1000);}catch(Exception ee){}
		}
		channel.disconnect();
		session.disconnect();
		}
		
		catch(Exception e){
			System.out.println(e);
		}
	return res;
}
 
開發者ID:franblas,項目名稱:Shavadoop,代碼行數:72,代碼來源:CommandSSH.java


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