全部产品
云市场

在远程服务器执行本地 shell 脚本

更新时间:2019-05-17 17:46:36

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

前提条件

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

操作步骤

将本地脚本上传至远程服务器中并执行的具体操作步骤如下:

注意:您可以下载 demo 工程来进行操作。

  1. 在本地创建您想要上传并执行的 shell 脚本。

  2. 在您的工程中执行以下代码。

    说明:请在代码中填入您的远程服务器 IP、用户名、登录密码和脚本地址等信息。

  1. package com.alibaba.pelican.demo;
  2. import com.alibaba.pelican.chaos.client.RemoteCmdClientConfig;
  3. import com.alibaba.pelican.chaos.client.RemoteCmdResult;
  4. import com.alibaba.pelican.chaos.client.impl.RemoteCmdClient;
  5. import com.alibaba.pelican.chaos.client.utils.CpuUtils;
  6. import org.apache.commons.io.IOUtils;
  7. /**
  8. * @author moyun@middleware
  9. */
  10. public class DemoExecScript {
  11. public static void main(String[] args) {
  12. //服务器IP
  13. String ip = "";
  14. //服务器用户名
  15. String userName = "";
  16. //服务器登录密码
  17. String password = "";
  18. RemoteCmdClientConfig config = new RemoteCmdClientConfig();
  19. config.setIp(ip);
  20. config.setUserName(userName);
  21. config.setPassword(password);
  22. RemoteCmdClient client = new RemoteCmdClient(config);
  23. //脚本地址
  24. String scriptPath = "demo.sh";
  25. RemoteCmdResult result = client.scpAndExecScript();
  26. System.out.println(result.getStdInfo());
  27. }
  28. }

结果验证

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

  1. [root@iZ2zejdbo0lni6dwgifbhqZ ~]$cd /root/scripts/
  2. [root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$sh demo.sh
  3. total 56
  4. dr-xr-x---. 6 root root 4096 Jan 25 15:32 .
  5. dr-xr-xr-x. 18 root root 4096 Jan 24 14:16 ..
  6. -rw------- 1 root root 227 Jan 24 21:01 .bash_history
  7. -rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
  8. -rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
  9. -rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
  10. drwx------ 3 root root 4096 Oct 15 2017 .cache
  11. -rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
  12. drwxr-xr-x 2 root root 4096 Oct 15 2017 .pip
  13. -rw-r--r-- 1 root root 64 Oct 15 2017 .pydistutils.cfg
  14. drwxr-xr-x 2 root root 4096 Jan 25 15:32 scripts
  15. drwx------ 2 root root 4096 Jan 24 14:16 .ssh
  16. -rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
  17. -rw------- 1 root root 596 Jan 25 15:32 .viminfo
  18. [root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$export HISTFILE=/dev/null
  19. [root@iZ2zejdbo0lni6dwgifbhqZ ~/scripts]$exit
  20. logout