若您想在远程服务器执行本地 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
文档内容是否对您有帮助?