python远程执行python脚本返回结果_从远程Python脚本返回值

我通过JSch从本地Java代码调用一个远程Python脚本。

当我在Python框上执行Java中的“ls”时,它将返回正确的结果(连接起作用)。然后我编写了一个返回字符串“hello world”的小程序。在Java端,结果为空。一般情况下,如果在终端上输出了某些内容,则返回它,但不返回变量。在

Java代码:import com.jcraft.jsch.*;

import java.io.IOException;

import java.io.InputStream;

import java.util.logging.Level;

import java.util.logging.Logger;

public class SSHManager

{

private static final Logger LOGGER = Logger.getLogger(SSHManager.class.getName());

private JSch jschSSHChannel;

private String strUserName;

private String strConnectionIP;

private int intConnectionPort;

private String strPassword;

private Session sesConnection;

private int intTimeOut;

private void doCommonConstructorActions(String userName, String password,

String connectionIP, String knownHostsFileName)

{

jschSSHChannel = new JSch();

try

{

jschSSHChannel.setKnownHosts(knownHostsFileName);

}

catch(JSchException jschX)

{

logError(jschX.getMessage());

}

strUserName = userName;

strPassword = password;

strConnectionIP = connectionIP;

}

public SSHManager(String userName, String password,

String connectionIP, String knownHostsFileName)

{

doCommonConstructorActions(userName, password,

connectionIP, knownHostsFileName);

intConnectionPort = 22;

intTimeOut = 60000;

}

public SSHManager(String userName, String password, String connectionIP,

String knownHostsFileName, int connectionPort)

{

doCommonConstructorActions(userName, password, connectionIP,

knownHostsFileName);

intConnectionPort = connectionPort;

intTimeOut = 60000;

}

public SSHManager(String userName, String password, String connectionIP,

String knownHostsFileName, int connectionPort, int timeOutMilliseconds)

{

doCommonConstructorActions(userName, password, connectionIP,

knownHostsFileName);

intConnectionPort = connectionPort;

intTimeOut = timeOutMilliseconds;

}

public String connect()

{

String errorMessage = null;

try

{

sesConnection = jschSSHChannel.getSession(strUserName,

strConnectionIP, intConnectionPort);

sesConnection.setPassword(strPassword);

// UNCOMMENT THIS FOR TESTING PURPOSES, BUT DO NOT USE IN PRODUCTION

// sesConnection.setConfig("StrictHostKeyChecking", "no");

java.util.Properties config = new java.util.Properties();

config.put("StrictHostKeyChecking", "no");

sesConnection.setConfig(config);

sesConnection.connect(intTimeOut);

}

catch(JSchException jschX)

{

System.out.println("Connection failed.");

errorMessage = jschX.getMessage();

}

return errorMessage;

}

private String logError(String errorMessage)

{

if(errorMessage != null)

{

LOGGER.log(Level.SEVERE, "{0}:{1} - {2}",

new Object[]{strConnectionIP, intConnectionPort, errorMessage});

}

return errorMessage;

}

private String logWarning(String warnMessage)

{

if(warnMessage != null)

{

LOGGER.log(Level.WARNING, "{0}:{1} - {2}",

new Object[]{strConnectionIP, intConnectionPort, warnMessage});

}

return warnMessage;

}

public String sendCommand(String command)

{

StringBuilder outputBuffer = new StringBuilder();

try

{

Channel channel = sesConnection.openChannel("exec");

((ChannelExec)channel).setCommand(command);

channel.connect();

InputStream commandOutput = channel.getInputStream();

int readByte = commandOutput.read();

while(readByte != 0xffffffff)

{

outputBuffer.append((char)readByte);

readByte = commandOutput.read();

}

channel.disconnect();

}

catch(IOException ioX)

{

logWarning(ioX.getMessage());

return null;

}

catch(JSchException jschX)

{

logWarning(jschX.getMessage());

return null;

}

return outputBuffer.toString();

}

public void close()

{

sesConnection.disconnect();

}

}

测试代码:

^{pr2}$

Python代码:#!/usr/bin/python

def main():

return "Hello world"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值