iT邦幫忙

0

Java 使用ssh連線到linux下指令 lsnrctl status prod 得到 bash: lsnrctl: command not found

今天要做定時去linux取得資訊
但是有一兩個指令直接在terminal連線到linux可以正常
但是用程式跑的時候卻都是bash: xxxxx: command not found

JSch jsch = null;
jsch = new JSch();
Session session = jsch.getSession(userName, host);
if(port != null && port != 0) {
    session.setPort(port);
}
session.setPassword(password);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(10000);
session.connect(); 
System.out.println("session = "+session.isConnected());

ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand("lsnrctl help now");
channelExec.setErrStream(System.err);
channelExec.connect();
String out = IOUtils.toString(in, "UTF-8");

System.out.println("out = "+out);

channelExec.disconnect();
session.disconnect();

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-08-06 11:58:02

Google這篇範例提供參考
然而
看起來你的問題比較像是這篇可以解決的
ie.non-interactive/non-login shell

後來是使用這一篇的方法,不改配置在指令前面加上source ~/.bash_profile

我要發表回答

立即登入回答