java程序执行linux命令

发布网友 发布时间:2022-04-23 13:04

我来回答

2个回答

热心网友 时间:2022-05-14 16:39

展开1全部首先确保Linux开启sshd服务,并支持远程SSH连接。java程序使用jsch框架登录Linux,执行命令。

protected void creation() throws Exception {
JSch jsch = new JSch();
session = jsch.getSession(userName, host, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(CONNECT_TIMEOUT);
session.setConfig("PreferredAuthentications", "password,keyboard-interactive");
session.setServerAliveInterval(1000 * 60 * 2);
session.connect();
}

public String sendCommand(String command) throws Exception {
if(!isConnected())
throw new JSchException("Session is not connected, command exec faild.");
final ChannelExec exec = (ChannelExec)session.openChannel("exec");
ByteArrayOutputStream out = new ByteArrayOutputStream();
exec.setCommand(command);
exec.setOutputStream(out);
exec.setExtOutputStream(out);
exec.connect();
final Thread thread = new Thread() {
public void run() {
while(!exec.isEOF()) {
try { Thread.sleep(500L); } catch(Exception e) {}
}
}
};
thread.setDaemon(true);
thread.start();
thread.join(EXEC_TIMEOUT);
thread.interrupt();
if(thread.isAlive()) {
throw new JSchException("Exec Time Out Error");
} else {
try {
exec.disconnect();
out.close();
} catch (Exception e) {
}
byte[] lens = out.toByteArray();
String result = new String(lens, charset);
if(result.startsWith("bash") && result.indexOf("command not found") != -1)
return "";
return result;
}
}

热心网友 时间:2022-05-14 17:57

参见 http://blog.csdn.net/a19881029/article/details/8063758
删除命令用 rm -f 文件名追问程序里或者调用linux命令,可不可以手工创建一个文件,然后随意更改文件的创建或修改时间?比如当前系统时间创建了一个test.txt文本,但是我想修改这个修建的创建时间为1周以前 可以做到吗?

追答程序调用linux命令应该都可以执行,
创建文件
touch test.txt

只能改变文件的修改时间
touch -t 0811142234.50 test.txt 设定文件的时间戳为08年11月14日22点34分40秒

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com