使用java登入遠端LINUX並對服務實現各種操作
在訪問linux時,首先需要使用工具類jar包:ganymed-ssh2
登入遠端伺服器:
public boolean login(){
//建立遠端連線,預設連線埠為22,如果不使用預設,可以使用方法
//new Connection(ip, port)建立物件
Connection conn = new Connection(ip);
try {
//連線遠端伺服器
conn.connect();
//使用使用者名稱和密碼登入
return conn.authenticateWithPassword(usr, psword);
} catch (IOException e) {
System.err.printf("使用者%s密碼%s登入伺服器%s失敗!", usr, psword, ip);
e.printStackTrace();
}
return false;
}
/**
* 上傳本地檔案到伺服器目錄下
* @param conn Connection物件
* @param fileName 本地檔案
* @param remotePath 伺服器目錄
*/
public void putFile(Connection conn, String fileName, String remotePath){
SCPClient sc = new SCPClient(conn);
try {
//將本地檔案放到遠端伺服器指定目錄下,預設的檔案模式為 0600,即 rw,
//如要更改模式,可呼叫方法 put(fileName, remotePath, mode),模式須是4位數字且以0開頭
sc.put(fileName, remotePath);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 下載伺服器檔案到本地目錄
* @param fileName 伺服器檔案
* @param localPath 本地目錄
*/
public void copyFile(Connection conn, String fileName,String localPath){
SCPClient sc = new SCPClient(conn);
try {
sc.get(fileName, localPath);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 在遠端LINUX伺服器上,在指定目錄下,獲取檔案各個屬性
* @param[in] conn Conncetion物件
* @param[in] remotePath 遠端主機的指定目錄
*/
public void getFileProperties(Conncetion conn, String remotePath){
try {
SFTPv3Client sft = new SFTPv3Client(conn);
Vector<?> v = sft.ls(remotePath);
for(int i=0;i<v.size();i++){
SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();
s = (SFTPv3DirectoryEntry) v.get(i);
//檔名
String filename = s.filename;
//檔案的大小
Long fileSize = s.attributes.size;
}
sft.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
/**
* 在遠端LINUX伺服器上,在指定目錄下,刪除指定檔案
* @param[in] fileName 檔名
* @param[in] remotePath 遠端主機的指定目錄
* @return
*/
public void delFile(String remotePath, String fileName){
try {
SFTPv3Client sft = new SFTPv3Client(conn);
//獲取遠端目錄下檔案列表
Vector<?> v = sft.ls(remotePath);
for(int i=0;i<v.size();i++){
SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();
s = (SFTPv3DirectoryEntry) v.get(i);
//判斷列表中檔案是否與指定檔名相同
if(s.filename.equals(fileName)){
//rm()方法中,須是檔案絕對路徑+檔名稱
sft.rm(remotePath + s.filename);
}
sft.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
/**
* 執行指令碼
* @param conn Connection物件
* @param cmds 要在linux上執行的指令
*/
public int exec(Connection conn, String cmds){
InputStream stdOut = null;
InputStream stdErr = null;
int ret = -1;
try {
//在connection中開啟一個新的會話
Session session = conn.openSession();
//在遠端伺服器上執行linux指令
session.execCommand(cmds);
//指令執行結束後的輸出
stdOut = new StreamGobbler(session.getStdout());
//指令執行結束後的錯誤
stdErr = new StreamGobbler(session.getStderr());
//等待指令執行結束
session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);
//取得指令執行結束後的狀態
ret = session.getExitStatus();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
return ret;
}
相關文章
- Java使用HttpClient實現遠端服務呼叫JavaHTTPclient
- linux SSH服務允許root使用者遠端登入Linux
- Ubuntu開啟ssh服務遠端登入Ubuntu
- Linux 遠端 ssh 登入Linux
- 《遠端控制》-服務端實現(一)服務端
- 小程式各種姿勢實現登入
- 如何遠端登入Linux系統?Linux
- Linux學習--遠端登入Linux系統Linux
- 谷歌:1.5%的使用者依然使用已洩露的憑證登入各種服務谷歌
- Linux更改SSH遠端登入埠教程Linux
- Linux下 SSH遠端管理服務Linux
- Linux(CentOS 7)VMWare下配置遠端登入LinuxCentOS
- 【Linux】apt軟體管理和遠端登入LinuxAPT
- linux遠端免密登入伺服器Linux伺服器
- Linux(9)-遠端登入Linux系統以及apt管理LinuxAPT
- vnc登入,vnc遠端登入工具的使用方法VNC
- 使用python遠端操作linux過程解析PythonLinux
- win10遠端登入設定如何操作_win10遠端登入電腦怎麼設定Win10
- Linux下安裝redis資料庫服務,並開啟遠端連線LinuxRedis資料庫
- docker Linux 各種操作記錄DockerLinux
- Linux Debian11伺服器安裝SSH,建立新使用者並允許SSH遠端登入,及SSH安全登入配置!Linux伺服器
- SSH遠端登入原理
- rocky one 遠端登入
- redis - 遠端登入指令Redis
- Java Web實現使用者登入功能JavaWeb
- 使用nodejs和Java訪問遠端伺服器的服務NodeJSJava伺服器
- 怎麼登入遠端伺服器 遠端登入VPS伺服器伺服器
- 如何實現通過JAVA遠端執行重啟tomcat操作?JavaTomcat
- 如何實現遠端桌面連線操作
- 【Azure 應用服務】NodeJS Express + MSAL 應用實現AAD整合登入並部署在App Service Linux環境中的實現步驟NodeJSExpressAPPLinux
- Pycharm連線遠端伺服器並實現遠端除錯PyCharm伺服器除錯
- 使用JAVA飛行器(JMC+JFR)遠端監控服務JVMJavaJVM
- spring cloud feign實現遠端呼叫服務傳輸檔案SpringCloud
- linux下使用yum安裝mysql,以及啟動、登入和遠端訪問LinuxMySql
- ssh遠端登入協議協議
- Go基於gRPC實現客戶端連入服務端GoRPC客戶端服務端
- 每天一條Linux命令(24) ssh (遠端安全登入)Linux
- java實現微信登入Java