若您想在遠程服務器執行本地 Shell 腳本,使用傳統方法需要先上傳腳本,再登錄遠程服務器執行腳本,步驟繁多。使用 PelicanDT,可以通過一行 Java 代碼實現此操作。
前提條件
已安裝 PelicanDT SDK。請參見安裝 PelicanDT SDK。
已在 Linux 遠程服務器上運行應用。
背景信息
本文使用 demo 工程來進行說明。
操作步驟
在本地創建 Shell 腳本。
在您的工程中執行以下代碼。
說明請在代碼中填入您的遠程服務器 IP、用戶名、登錄密碼和腳本地址等信息。
package com.alibaba.pelican.demo; import com.alibaba.pelican.chaos.client.RemoteCmdClientConfig; import com.alibaba.pelican.chaos.client.RemoteCmdResult; import com.alibaba.pelican.chaos.client.impl.RemoteCmdClient; import com.alibaba.pelican.chaos.client.utils.CpuUtils; import org.apache.commons.io.IOUtils; /** * @author moyun@middleware */ public class DemoExecScript { public static void main(String[] args) { //服務器IP String ip = ""; //服務器用戶名 String userName = ""; //服務器登錄密碼 String password = ""; RemoteCmdClientConfig config = new RemoteCmdClientConfig(); config.setIp(ip); config.setUserName(userName); config.setPassword(password); RemoteCmdClient client = new RemoteCmdClient(config); //腳本地址 String scriptPath = "demo.sh"; RemoteCmdResult result = client.scpAndExecScript(scriptPath); System.out.println(result.getStdInfo()); } }
執行結果
以 demo 工程為例,執行程序后,日志輸出內容如下:
[root@iZ2zejdbo0lni6dwgifbhqZ ~]$cd /root/scripts/
[root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$sh demo.sh
total 56
dr-xr-x---. 6 root root 4096 Jan 25 15:32 .
dr-xr-xr-x. 18 root root 4096 Jan 24 14:16 ..
-rw------- 1 root root 227 Jan 24 21:01 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwx------ 3 root root 4096 Oct 15 2017 .cache
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 4096 Oct 15 2017 .pip
-rw-r--r-- 1 root root 64 Oct 15 2017 .pydistutils.cfg
drwxr-xr-x 2 root root 4096 Jan 25 15:32 scripts
drwx------ 2 root root 4096 Jan 24 14:16 .ssh
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
-rw------- 1 root root 596 Jan 25 15:32 .viminfo
[root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$export HISTFILE=/dev/null
[root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$exit
logout
文檔內容是否對您有幫助?