项目需要用linux服务器A执行传输脚本(部署定时任务)到另一台linux服务器B,然后在B上执行该脚本实现拉取数据功能。然而蛋疼的是策略开放的服务器为C,C可以访问A,但是C不能直接访问B,所以,必须用C做中转,传文件到A,然后由A执行传输部署命令。
简单思路是A上用Runtime()获取本机linux运行环境,然后执行传输命令 scp……部署脚本传输到B后,再远程登录B,执行部署脚本。
简单执行代码如下,mark一下笔记。
远程登录服务器代码
public static void main(String[] args) {
//服务器地址
String hostname = "192.168.168.170";
String username = "linux服务器_账户名";
String password = "linux服务器_对应账户密码";
//连续命令用 && 连接 可以保证在同一目录下执行
//String command=" cd admin && cd paymentconfirm && ls ";
String command=" cd admin && ls";
Connection conn=null;
Session sess=null;
try {
conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
//调用一个方法执行命令
execCommand(conn,sess,command);
}
catch (IOException e)
{
e.printStackTrace(S