在远程服务器执行本地 Shell 脚本
若您想在远程服务器执行本地 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