若您想在远程服务器执行本地 shell 脚本,使用传统方法需要先上传脚本,再登录远程服务器执行脚本,步骤繁多。使用 PelicanDT,可以通过一行 Java 代码实现此操作。

前提条件

  • 已安装 PelicanDT SDK。请参见安装 PelicanDT SDK
  • 已在 Linux 远程服务器上运行应用。

背景信息

本文使用 demo 工程来进行说明。

操作步骤

  1. 在本地创建 shell 脚本。
  2. 在您的工程中执行以下代码。
    说明 请在代码中填入您的远程服务器 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();         System.out.println(result.getStdInfo());     } } 					

执行结果

demo 工程为例,执行程序后,日志输出内容如下:

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

[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