Как выполнить сценарий оболочки для запуска службы с помощью команды sudo в Linux через Java Ex:cmd="sudo path/script.sh start"
Эта программа Java будет выполнять команды в Linux. Даже я могу выполнить «sudo ls -lt path», а также «sudo path/script.sh start»
//Java
public List<String> sshConnection(String usr,String host,int port,String pass)
{
Session session=null;
List<String> outputList = new ArrayList<String>();
try
{
JSch jsch = new JSch();
session = jsch.getSession(usr, host, port);
session.setPassword(pass);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
//String cmd="sudo ls path"; //working fine
String cmd="sudo path/script.sh start"; //service is not starting..but getting the exact output as linux
ChannelExec channelEx=new ChannelExec();
channelEx = (ChannelExec) session.openChannel("exec");
if(cmd.contains("sudo"))
{
channelEx.setPty(true);
}
((ChannelExec) channelEx).setCommand(cmd);
channelEx.connect();
InputStream cmdOp = channelEx.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(cmdOp));
String printOp;
while ((printOp = br.readLine()) != null)
{
outputList.add(printOp);
}
br.close();
channelEx.disconnect();
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
finally
{
if (channelEx != null)
{
channelEx.disconnect();
}
}
if(session!=null)
{
session.disconnect();
}
System.out.println("disconnected successfully");
return outputList;
}
Я выполнил ту же команду непосредственно в Linux и получил вывод о том, что «служба запущена» с идентификатором процесса. Когда я выполнил grep для идентификатора процесса с помощью команды ps, он отобразил службу с тем же идентификатором процесса. Но когда я выполнил ту же команду с помощью вышеуказанной Java-программы, я получил точный вывод («служба запущена») как linux с идентификатором процесса в выходной консоли. После выполнения Java-программы я сделал grep для идентификатора процесса ( из консоли вывода Java) в Linux такой процесс не выполнялся с этим идентификатором процесса. Я не могу найти, где что-то идет не так.
Пожалуйста, помогите!