国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java遠程連接Linux服務器并執行命令及上傳文件功能

Java遠程連接Linux服務器并執行命令及上傳文件功能

2021-05-05 11:44StaticKing Java教程

這篇文章主要介紹了Java遠程連接Linux服務器并執行命令及上傳文件功能,本文是小編整理的代碼筆記,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

 最近再開發中遇到需要將文件上傳到linux服務器上,至此整理代碼筆記。

此種連接方法中有考慮到并發問題,在進行創建ftp連接的時候將每一個連接對象存放至

threadlocal<ftp> 中以確保每個線程之間對ftp的打開與關閉互不影響。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.test.utils;
import java.io.bufferedinputstream;
import java.io.file;
import java.io.filefilter;
import java.io.fileinputstream;
import java.io.inputstream;
import java.util.arraylist;
import java.util.date;
import java.util.list;
import org.apache.commons.logging.log;
import org.apache.commons.logging.logfactory;
import com.jcraft.jsch.channelsftp;
import com.jcraft.jsch.jsch;
import com.jcraft.jsch.session;
public class ftp {
  //打印log日志
  private static final log logger = logfactory.getlog(ftp.class);
  private static date last_push_date = null;
  private session sshsession;
  private channelsftp channel;
  private static threadlocal<ftp> sftplocal = new threadlocal<ftp>();
  private ftp(string host, int port, string username, string password) throws exception {
    jsch jsch = new jsch();
    jsch.getsession(username, host, port);
    //根據用戶名,密碼,端口號獲取session
    sshsession = jsch.getsession(username, host, port);
    sshsession.setpassword(password);
    //修改服務器/etc/ssh/sshd_config 中 gssapiauthentication的值yes為no,解決用戶不能遠程登錄
    sshsession.setconfig("userauth.gssapi-with-mic", "no");
    //為session對象設置properties,第一次訪問服務器時不用輸入yes
    sshsession.setconfig("stricthostkeychecking", "no");
    sshsession.connect();
    //獲取sftp通道
    channel = (channelsftp)sshsession.openchannel("sftp");
    channel.connect();
    logger.info("連接ftp成功!" + sshsession);
  }
  /**
   * 是否已連接
   *
   * @return
   */
  private boolean isconnected() {
    return null != channel && channel.isconnected();
  }
  /**
   * 獲取本地線程存儲的sftp客戶端
   *
   * @return
   * @throws exception
   */
  public static ftp getsftputil(string host, int port, string username, string password) throws exception {
    //獲取本地線程
    ftp sftputil = sftplocal.get();
    if (null == sftputil || !sftputil.isconnected()) {
      //將新連接防止本地線程,實現并發處理
      sftplocal.set(new ftp(host, port, username, password));
    }
    return sftplocal.get();
  }
  /**
   * 釋放本地線程存儲的sftp客戶端
   */
  public static void release() {
    if (null != sftplocal.get()) {
      sftplocal.get().closechannel();
      logger.info("關閉連接" + sftplocal.get().sshsession);
      sftplocal.set(null);
    }
  }
  /**
   * 關閉通道
   *
   * @throws exception
   */
  public void closechannel() {
    if (null != channel) {
      try {
        channel.disconnect();
      } catch (exception e) {
        logger.error("關閉sftp通道發生異常:", e);
      }
    }
    if (null != sshsession) {
      try {
        sshsession.disconnect();
      } catch (exception e) {
        logger.error("sftp關閉 session異常:", e);
      }
    }
  }
  /**
   * @param directory 上傳ftp的目錄
   * @param uploadfile 本地文件目錄
   *
   */
  public void upload(string directory, string uploadfile) throws exception {
    try {<br>    //執行列表展示ls 命令
    channel.ls(directory);<br>    //執行盤符切換cd 命令
    channel.cd(directory);
    list<file> files = getfiles(uploadfile, new arraylist<file>());
    for (int i = 0; i < files.size(); i++) {
      file file = files.get(i);
      inputstream input = new bufferedinputstream(new fileinputstream(file));
      channel.put(input, file.getname());
      try {
        if (input != null) input.close();
      } catch (exception e) {
        e.printstacktrace();
        logger.error(file.getname() + "關閉文件時.....異常!" + e.getmessage());
      }
      if (file.exists()) {
        boolean b = file.delete();
        logger.info(file.getname() + "文件上傳完畢!刪除標識:" + b);
      }
    }
    }catch (exception e) {
      logger.error("【子目錄創建中】:",e);
            //創建子目錄
      channel.mkdir(directory);
    }
  }
  //獲取文件
  public list<file> getfiles(string realpath, list<file> files) {
    file realfile = new file(realpath);
    if (realfile.isdirectory()) {
      file[] subfiles = realfile.listfiles(new filefilter() {
        @override
        public boolean accept(file file) {
          if (null == last_push_date ) {
            return true;
          } else {
            long modifydate = file.lastmodified();
            return modifydate > last_push_date.gettime();
          }
        }
      });
      for (file file : subfiles) {
        if (file.isdirectory()) {
          getfiles(file.getabsolutepath(), files);
        } else {
          files.add(file);
        }
        if (null == last_push_date) {
          last_push_date = new date(file.lastmodified());
        } else {
          long modifydate = file.lastmodified();
          if (modifydate > last_push_date.gettime()) {
            last_push_date = new date(modifydate);
          }
        }
      }
    }
    return files;
  }
}

總結

以上所述是小編給大家介紹的java遠程連接linux服務器并執行命令及上傳文件,希望對大家有所幫助如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

原文鏈接:https://www.cnblogs.com/staticking/p/9082648.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品亚洲成在人线av网址 | 综合伊人久久 | 国产在线看片 | 午夜激情在线播放 | 精品乱子伦一区二区三区 | a免费视频 | 网站黄色在线观看免费 | 日韩影院在线 | 中文字幕国产日韩 | www久久精品| 精品久久久久久久久久久久久久 | 国产一区二区三区高清 | 一区二区视频 | 狠狠干狠狠干 | 精品视频免费在线 | 天天碰天天操 | 综合久久综合 | 亚洲一区二区免费视频 | 在线成人一区 | 龙珠z普通话国语版在线观看 | 亚洲人人射 | 日韩精品在线一区二区 | 国产精品一区二区三区在线播放 | 中文字幕精品一区二区精品绿巨人 | 一区二区三区视频在线观看 | 中文字幕国产视频 | 日韩av资源网 | 亚洲欧美中文日韩在线 | 免费嗨片网 | 久久国产精品久久久久久 | 97精品国产97久久久久久粉红 | 九色av | 中文字幕第一页在线 | 日韩av怡红院 | 国产欧美综合一区二区三区 | 一二三四区视频在线观看 | 国产精品久久久久久久久久久久冷 | 黑人巨大精品欧美一区免费视频 | 成人免费观看在线视频 | 精品第一页 | 久久久久99精品 |