Я хочу передать имя скрипту оболочки, который принимает ввод из командной строки.
Вывод, который я хочу получить, заключается в том, что я должен быть в состоянии отправить имя из моего кода Java в сценарий.
Я новичок в JSch и ExpectJ
Ниже моя оболочка Сценарий:
! / Бен / Баш
эхо "Имя:"
читать имя
echo "Введенное имя: $ name"
Это код Java:
public static void main(String[] args) {
String flag = "";
try {
/**
* Create a new Jsch object This object will execute shell commands
* or scripts on server
*/
JSch jsch = new JSch();
Session session = jsch.getSession("xxxx",
"xxxxxx", xx);
session.setConfig("StrictHostKeyChecking", "no");
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password,gssapi-with-mic");
session.setPassword("mcts@123");
session.connect();
if (session.isConnected()) {
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("cd /home/Inder; ./hello.sh");
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
/*channel.connect();
if (channel.isConnected())
System.out.println("Channel connected");*/
ExpectJ exp = new ExpectJ();
Spawn s = exp.spawn(channel);
s.expect("Name:");
s.send("abcd");
// s.expect("Entered name:");
System.out.println("New Text : " + s.getCurrentStandardOutContents());
s.stop();
channel.disconnect();
session.disconnect();
} else {
flag = "NATL";// Not able to Login(NATL)
}
// retrieve the exit status of the remote command corresponding to
// this channel
}catch(JSchException e){
flag = "NATL";
e.printStackTrace();
}
catch (Exception e ) {
e.printStackTrace();
System.err.println("Error: " + e.getMessage());
}
}
Токовый выход:
Имя: / * Это исходит от эха сценария * /
Новый текст: Имя: / это происходит из строки s.getCurrentStandardOutContents () /