首先确保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;
}
}
Ⅱ java jsch ftp上传到linux的事情,linux是不是需要设置什么东西。因为现在有台服务器上传图片速度很慢。
1)检查一下服务器的网络,可以ping一下看看响应时间
2)看看服务器端是不是设置了限速,最大连接数设置等等
3)查看服务器的负载是不是很高
Ⅲ java中操作Linux的ganymed和Jsch各有什么特点
Java和Linux的理想关系是,一方面有一种可以在所有操作系统上运行的语言,另一方面操作系统可以根据需要进行各种计算。这种关系本身在过去,现在或者将来都可以实现,但现在目前Java并没有在Linux界唤起多大的兴趣,原因主要在于Java和Linux群体和技术在原则性和专业性上存在差异造成的。
原则性的差异涉及开放源码和免费软件这两个术语。Java既不开放也不免费,而Linux坚持这两个原则,至少在理论上是这样。此外,Java倡导者也必须明白,在Linux界存在着一个明显的分歧,大部分Linux人士都非常注重“free”这个词,虽然有些人是从经济上来了解这个词,但无论怎样他们都坚持开放源码的原则。尽管Linux有向各个阶层推广的趋势,但目前来说自由软件的积极倡导者主要来自世界各大学的学生和研究人员。他们对Linux的发展是非常关键的,为开发Linux和操作系统软件输送了大批的人才。
开放源码和Linux的商业价值取决于那些用Linux为市场开发产品的开发人员,以及喜欢根据自己需要用Linux对操作系统进行自定义的人们。如果必要,这些人会出钱购买Linux,因为它是一种开放的源码。他们对Linux的发展也是至关重要的,否则,Linux将只是一堆计算机课程和深奥的研究课题。
Ⅳ jsch实现java sftp上传,在非root用户下出现permission dined异常,
这个正常,应该是你当前上传用户在上传位置没有权限造成的,权限应该在服务器端修改
Ⅳ Java使用JSch,ChannelExec取不到结果,在while(true)中死循环。ChannelShell结果难处理,求指点
1、无法执行多条命令,每次ChannelExec在connect前要先setCommand,最后一次的设置生效。
2、由于第一个原因的限制,如果执行的命令需要环境变量(如JAVA_HOME),就没有办法了。这种方式执行基本的ls,ps之类的命令没有问题,需要复杂的环境变量时有点力不从心。
Ⅵ com.jcraft.jsch.Channel; 是什么意思
www.jcraft.com 是一个开源的致力于数据安全访问机制的官方网站,而jsch是Java 安全管道的意思,com.jcraft.jsch.Channel 是此组织实现安全管道访问java实现的一个工具(管道),是jsch-x.x.x.jar 组件包下的一个类
Ⅶ JAVA_JSCH如何远程操作SFTP服务器上的文件
使用SSH协议进行FTP传输的协议叫SFTP
换言之你的SSH协议一定启用了,那么使用基本linux命令在远端执行即可。
我个人而言,JSCH一般是这样用的:SFTP用于单纯的文件上传,之后直接使用基础ssh协议执行远端linux命令(比如说,移动文件或是重启服务器等等)
至于API的具体使用方式,稍微搜索一下很容易找到,比如这个:
http://blog.csdn.net/allen_zhao_2012/article/details/7941631
Ⅷ jsch.jar对jdk版本要求
下载好jdk,并按照提示一步步安装,最后记下jdk所在的安装位置,这里假设在C:\Program Files (x86)\Java\jdk1.8.0_20
2
现在开始配置环境变量。
鼠标右键点击“计算机”,选择属性,点击“高级系统设置”,在点击“高级”,最后点击“环境变量”,进入界面开始配置
提示:若选择“用户变量”,则本次配置的变量只对该用户有效
若选择“系统变量”,则对所有用户有效。
这里我们选择“系统变量”。
我们在“系统变量”里点击“新建”。
变量名为:JAVA_HOME
变量值为:C:\Program Files (x86)\Java\jdk1.8.0_20
记得确定啊。
ps:变量值就是你jdk安装的路径我这里为C:\Program Files (x86)\Java\jdk1.8.0_20
Ⅸ jsch如何执行top命令
首先确保Linux开启sshd服务,并支持远程SSH连接。java程序使用jsch框架登录Linux,执行命令。