在Windows系统中如何用java代码通过jsch获取linux服务器得系统时间?60


吴家宝
吴家宝 2024-04-23 17:22:10 45454
分类专栏:问题 问题分类: windows
系统自动结题

有一个需求是:在Windows系统中用java代码通过jsch将linux服务器里的文件下载到本地,但是在配置linux服务器的文件路径时,需要用到linux服务器的系统时间来动态拼接文件名,请问如何拿到这个时间并传递到java代码中?

3 个回答
  • 1843880570 进阶 2024-04-23 17:55:53

    package com.idc.remote;
     
    public class SshConfiguration {
        private String host;
        private String username;
        private String password;
        private int port;
        public String getHost() {
            return host;
        }
        public void setHost(String host) {
            this.host = host;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public int getPort() {
            return port;
        }
        public void setPort(int port) {
            this.port = port;
        }
        
    }

    package com.idc.remote;
     
    import java.util.Properties;
     
    import com.jcraft.jsch.ChannelExec;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.JSchException;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpException;
     
    public class SshUtil {
    private ChannelSftp channelSftp;
    private ChannelExec channelExec;
    private Session session=null;
    private int timeout=60000;
     
    public SshUtil(SshConfiguration conf) throws JSchException{
    System.out.println("try connect to  "+conf.getHost()+",username: "+conf.getUsername()+",password: "+conf.getPassword()+",port: "+conf.getPort());
    JSch jSch=new JSch(); //创建JSch对象
    session=jSch.getSession(conf.getUsername(), conf.getHost(), conf.getPort());//根据用户名,主机ip和端口获取一个Session对象
    session.setPassword(conf.getPassword()); //设置密码
    Properties config=new Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);//为Session对象设置properties
    session.setTimeout(timeout);//设置超时
    session.connect();//通过Session建立连接
    }
    public void download(String src,String dst) throws JSchException, SftpException{
    //src linux服务器文件地址,dst 本地存放地址
    channelSftp=(ChannelSftp) session.openChannel("sftp");
    channelSftp.connect();
    channelSftp.get(src, dst);
    channelSftp.quit();
    }
    public void close(){
    session.disconnect();
    }
    public static void main(String[] args){
    SshConfiguration configuration=new SshConfiguration();
    configuration.setHost("192.168.1.109");
    configuration.setUsername("root");
    configuration.setPassword("123456789");
    configuration.setPort(22);
    try{
    SshUtil sshUtil=new SshUtil(configuration);
    sshUtil.download("/home/bigdata/0119EC5A1EF19C8BB1D5F30ED05D0A6D.apk","0119EC5A1EF19C8BB1D5F30ED05D0A6D.apk");
    sshUtil.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }
    赞同 0 反对 0

  • 吴家宝 新手 2024-04-24 13:38:57

    @1843880570 你这个是什么?老哥

     

    赞同 0 反对 0

  • prtyaa 新手 2024-04-30 00:31:29
    在Windows系统中如何用java代码通过jsch获取linux服务器得系统时间

    要在Windows系统上使用Java代码通过JSch获取Linux服务器的系统时间,你需要先添加JSch库到你的项目中。以下是一个简单的Java代码示例,展示了如何实现这个功能:

    首先,确保你的项目中包含了JSch库。如果你使用的是Maven,可以添加以下依赖到你的pom.xml文件中:

     
     
     
     
     
     
     
     
     
     
    <dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
    </dependency>
     
     

    然后,使用以下Java代码通过SSH连接到Linux服务器并获取系统时间:

     
     
     
     
     
     
     
     


    在Windows系统中如何用java代码通过jsch获取linux服务器得系统时间
    要在Windows系统上使用Java代码通过JSch获取Linux服务器的系统时间,你需要先添加JSch库到你的项目中。以下是一个简单的Java代码示例,展示了如何实现这个功能:

    首先,确保你的项目中包含了JSch库。如果你使用的是Maven,可以添加以下依赖到你的pom.xml文件中:

    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.55</version>
    </dependency>
    然后,使用以下Java代码通过SSH连接到Linux服务器并获取系统时间:

    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelExec;
     
    import java.io.InputStream;
     
    public class SSHClient {
        public static void main(String[] args) {
            String host = "your_linux_server_ip";
            String user = "your_username";
            String password = "your_password";
            int port = 22; // SSH 默认端口
     
            try {
                JSch jsch = new JSch();
                Session session = jsch.getSession(user, host, port);
                session.setPassword(password);
                session.setConfig("StrictHostKeyChecking", "no");
                session.connect();
     
                String command = "date"; // Linux命令,获取系统时间
                Channel channel = session.openChannel("exec");
                ((ChannelExec) channel).setCommand(command);
                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()) {
                        System.out.println("exit-status: " + channel.getExitStatus());
                        break;
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (Exception ee) {
                    }
                }
                channel.disconnect();
                session.disconnect();
     
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    确保替换your_linux_server_ip, your_username, 和your_password为你的Linux服务器的IP地址、用户名和密码。

    运行上述代码,它会输出Linux服务器上的系统时间。

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelExec;
     
    import java.io.InputStream;
     
    public class SSHClient {
    public static void main(String[] args) {
    String host = "your_linux_server_ip";
    String user = "your_username";
    String password = "your_password";
    int port = 22; // SSH 默认端口
     
    try {
    JSch jsch = new JSch();
    Session session = jsch.getSession(user, host, port);
    session.setPassword(password);
    session.setConfig("StrictHostKeyChecking", "no");
    session.connect();
     
    String command = "date"; // Linux命令,获取系统时间
    Channel channel = session.openChannel("exec");
    ((ChannelExec) channel).setCommand(command);
    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()) {
    System.out.println("exit-status: " + channel.getExitStatus());
    break;
    }
    try {
    Thread.sleep(1000);
    } catch (Exception ee) {
    }
    }
    channel.disconnect();
    session.disconnect();
     
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
     
     

    确保替换your_linux_server_ipyour_username, 和your_password为你的Linux服务器的IP地址、用户名和密码。

    运行上述代码,它会输出Linux服务器上的系统时间。

    赞同 0 反对 0

    丫哈哈哈哈哈哈哈各个环节
吴家宝新手
粉丝 1 发表 14 + 关注 私信
上周热门
统信系统能生成某一指定文件夹下的所有文件列表吗  2773
统信系统有自己的字幕屏幕保护程序吗  2533
统信软件能支持pandas吗  2456
统信系统如何在保证自己数据安全的基础上,进行数据分析,比如使用pandas进行大数据分析  2445
安全与发展,统信系统是如何在两者之间权衡,满足用户高效办公的要求  2104
统信系统的数据安全机制是什么  1770
统信软件支持python为什么不支持安装pandas  1115
您好,我想问一下,就是这银河麒麟系统,背景黑屏怎么办啊,其他的都正常,就是没有背景,设置里面的背景一点击系统就不响应了怎么解决?  178
我想连接共享打印机可是,搜索驱动时候没有,怎么办  162
uos有支持活体检测的软件吗  150
本周热议
麒麟系统登录输入密码后又需要重新输入密码,确定密码正确。如何处理? 12
求麒麟系统下的Broadcom 802.11n 无线网卡驱动 10
银河麒麟桌面操作系统V10 SP1安装应用时会反复提示安全授权认证,如何才能取消呢? 10
统信UOS系统下安装HP打印机驱动问题 10
银河麒麟系统登录时用户名是中文,如何将输入法切换成中文进行登录? 9
如何在统信系统使用VFP? 9
使用正版软件承诺书每年一签有相关的政策文件吗? 8
银河麒麟系统安装软件需要密码授权,单用户模式修改密码不行,如何解决 8
uos系统怎么装了向日葵,向日葵打不开啊? 7
有偿使用中国长城信创运维工程师(初级)证书 7

加入交流群

请使用微信扫一扫!