Package ch.ethz.ssh2

Examples of ch.ethz.ssh2.Session


    }
  }

  private SFTPv3Client FtpClient() throws Exception {
    if (sftpClient == null) {
      sftpClient = new SFTPv3Client(this.getSshConnection());
    }
    return sftpClient;
  }
View Full Code Here


   * @throws Exception
   */
  protected boolean sshFileExists(SFTPv3Client psftpClient, String filename) {

    try {
      SFTPv3FileAttributes attributes = psftpClient.stat(filename);

      if (attributes != null) {
        return (attributes.isRegularFile() || attributes.isDirectory());
      }
      else {
        return false;
      }

View Full Code Here

   * @throws Exception
   */
  protected int sshFilePermissions(SFTPv3Client psftpClient, String filename) {

    try {
      SFTPv3FileAttributes attributes = psftpClient.stat(filename);

      if (attributes != null) {
        return attributes.permissions.intValue();
      }
      else {
View Full Code Here

  public SFTPv3FileHandle getFileHandle(final String pstrFileName, final Integer pintPermissions) throws Exception {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::setFilePermissions";

    SFTPv3FileAttributes attr = new SFTPv3FileAttributes();
    attr.permissions = pintPermissions;
    SFTPv3FileHandle fileHandle = this.FtpClient().createFileTruncate(pstrFileName, attr);
    return fileHandle;
  } // private void setFilePermissions
View Full Code Here

  public void setFilePermissions(final String pstrFileName, final Integer pintPermissions) throws Exception {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::setFilePermissions";

    SFTPv3FileAttributes attr = new SFTPv3FileAttributes();
    attr.permissions = pintPermissions;
    @SuppressWarnings("unused")
    SFTPv3FileHandle fileHandle = this.FtpClient().createFileTruncate(pstrFileName, attr);
  } // private void setFilePermissions
View Full Code Here

          pfleCommandFile = resultFile;
        }
      }

      // set execute permissions for owner
      SFTPv3FileHandle fileHandle = this.getFileHandle(strFileName, new Integer(0700));

      FileInputStream fis = null;
      long offset = 0;
      try {
        fis = new FileInputStream(pfleCommandFile);
View Full Code Here

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::setFilePermissions";

    SFTPv3FileAttributes attr = new SFTPv3FileAttributes();
    attr.permissions = pintPermissions;
    SFTPv3FileHandle fileHandle = this.FtpClient().createFileTruncate(pstrFileName, attr);
    return fileHandle;
  } // private void setFilePermissions
View Full Code Here

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::setFilePermissions";

    SFTPv3FileAttributes attr = new SFTPv3FileAttributes();
    attr.permissions = pintPermissions;
    @SuppressWarnings("unused")
    SFTPv3FileHandle fileHandle = this.FtpClient().createFileTruncate(pstrFileName, attr);
  } // private void setFilePermissions
View Full Code Here

      if (isAuthenticated == false)
        throw new IOException("Authentication failed.");

      /* Create a session */

      Session sess = conn.openSession();

      sess.execCommand("uname -a && date && uptime && who");

      System.out.println("Here is some information about the remote host:");

      /*
       * This basic example does not handle stderr, which is sometimes dangerous
       * (please read the FAQ).
       */

      InputStream stdout = new StreamGobbler(sess.getStdout());

      BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

      while (true)
      {
        String line = br.readLine();
        if (line == null)
          break;
        System.out.println(line);
      }

      /* Show exit status, if available (otherwise "null") */

      System.out.println("ExitCode: " + sess.getExitStatus());

      /* Close this session */

      sess.close();

      /* Close the connection */

      conn.close();

 
View Full Code Here

      if (isAuthenticated == false)
        throw new IOException("Authentication failed.");

      /* Create a session */

      Session sess = conn.openSession();

      sess.execCommand("echo \"Huge amounts of text on STDOUT\"; echo \"Huge amounts of text on STDERR\" >&2");

      /*
       * Advanced:
       * The following is a demo on how one can read from stdout and
       * stderr without having to use two parallel worker threads (i.e.,
       * we don't use the Streamgobblers here) and at the same time not
       * risking a deadlock (due to a filled SSH2 channel window, caused
       * by the stream which you are currently NOT reading from =).
       */

      /* Don't wrap these streams and don't let other threads work on
       * these streams while you work with Session.waitForCondition()!!!
       */

      InputStream stdout = sess.getStdout();
      InputStream stderr = sess.getStderr();

      byte[] buffer = new byte[8192];

      while (true)
      {
        if ((stdout.available() == 0) && (stderr.available() == 0))
        {
          /* Even though currently there is no data available, it may be that new data arrives
           * and the session's underlying channel is closed before we call waitForCondition().
           * This means that EOF and STDOUT_DATA (or STDERR_DATA, or both) may
           * be set together.
           */

          int conditions = sess.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA
              | ChannelCondition.EOF, 2000);

          /* Wait no longer than 2 seconds (= 2000 milliseconds) */

          if ((conditions & ChannelCondition.TIMEOUT) != 0)
          {
            /* A timeout occured. */
            throw new IOException("Timeout while waiting for data from peer.");
          }

          /* Here we do not need to check separately for CLOSED, since CLOSED implies EOF */

          if ((conditions & ChannelCondition.EOF) != 0)
          {
            /* The remote side won't send us further data... */

            if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0)
            {
              /* ... and we have consumed all data in the local arrival window. */
              break;
            }
          }

          /* OK, either STDOUT_DATA or STDERR_DATA (or both) is set. */

          // You can be paranoid and check that the library is not going nuts:
          // if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0)
          //  throw new IllegalStateException("Unexpected condition result (" + conditions + ")");
        }

        /* If you below replace "while" with "if", then the way the output appears on the local
         * stdout and stder streams is more "balanced". Addtionally reducing the buffer size
         * will also improve the interleaving, but performance will slightly suffer.
         * OKOK, that all matters only if you get HUGE amounts of stdout and stderr data =)
         */

        while (stdout.available() > 0)
        {
          int len = stdout.read(buffer);
          if (len > 0) // this check is somewhat paranoid
            System.out.write(buffer, 0, len);
        }

        while (stderr.available() > 0)
        {
          int len = stderr.read(buffer);
          if (len > 0) // this check is somewhat paranoid
            System.err.write(buffer, 0, len);
        }
      }

      /* Close this session */

      sess.close();

      /* Close the connection */

      conn.close();

 
View Full Code Here

TOP

Related Classes of ch.ethz.ssh2.Session

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.