java远程操作linux系统,虚拟机

需求: 将本地的一个脚本传到另一台并执行,两个工具类实现,ShellFileUtil 远程传文件ShellUtil远程操作虚拟机执行脚本

以下是代码

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
import java.util.Vector;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

public class ShellFileUtil {
   /**
    * 连接sftp服务器
    * 
    * @param host
    *            主机
    * @param port
    *            端口
    * @param username
    *            用户名
    * @param password
    *            密码
    * @return
    */
   public static ChannelSftp connect(String host, int port, String username,
         String password) {
      ChannelSftp sftp = null;
      try {
         JSch jsch = new JSch();
         //jsch.getSession(username, host, port);
         Session sshSession = jsch.getSession(username, host, port);
         System.out.println("Session created.");
         sshSession.setPassword(password);
         Properties sshConfig = new Properties();
         sshConfig.put("StrictHostKeyChecking", "no");
         sshSession.setConfig(sshConfig);
         sshSession.connect();
         System.out.println("Session connected.");
         System.out.println("Opening Channel.");
         Channel channel = sshSession.openChannel("sftp");
         channel.connect();
         sftp = (ChannelSftp) channel;
         System.out.println("Connected to " + host + ".");
      } catch (Exception e) {

      }
      return sftp;
   }

   /**
    * 上传文件
    * 
    * @param directory
    *            上传的目录
    * @param uploadFile
    *            要上传的文件
    * @param sftp
    */
   public static void upload(String directory, String uploadFile, ChannelSftp sftp) {
      try {
         sftp.cd(directory);
         File file = new File(uploadFile);
         sftp.put(new FileInputStream(file), file.getName());
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

   /**
    * 下载文件
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值