- N +

使用java登录远程LINUX并对服务实现各种操作

使用java登录远程LINUX并对服务实现各种操作原标题:使用java登录远程LINUX并对服务实现各种操作

导读:

在访问linux时,首先需要使用工具类jar包:ganymed-ssh2登录远程服务器:public boolean login(){ //创建远程连接,默认连接端口为22,如...

文章目录 [+]

在访问linux时,首先需要使用工具类jar包:ganymed-ssh2


登录远程服务器:


public boolean login(){

//创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法

//new Connection(ip, port)创建对象

Connection conn = new Connection(ip);        

try {

//连接远程服务器

conn.connect();

//使用用户名和密码登录

        return conn.authenticateWithPassword(usr, psword);

} catch (IOException e) {   

System.err.printf("用户%s密码%s登录服务器%s失败!", usr, psword, ip);

e.printStackTrace();

  }

  return false;

}

/**

  * 上传本地文件到服务器目录下

  * @param conn Connection对象

  * @param fileName 本地文件

  * @param remotePath 服务器目录

  */

public void putFile(Connection conn, String fileName, String remotePath){

SCPClient sc = new SCPClient(conn);

try {

//将本地文件放到远程服务器指定目录下,默认的文件模式为 0600,即 rw,

//如要更改模式,可调用方法 put(fileName, remotePath, mode),模式须是4位数字且以0开头

sc.put(fileName, remotePath);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

  * 下载服务器文件到本地目录

  * @param fileName 服务器文件

  * @param localPath 本地目录

  */

public void copyFile(Connection conn, String fileName,String localPath){

SCPClient sc = new SCPClient(conn);

try {

sc.get(fileName, localPath);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

 * 在远程LINUX服务器上,在指定目录下,获取文件各个属性

 * @param[in] conn Conncetion对象

 * @param[in] remotePath 远程主机的指定目录

 */

public void getFileProperties(Conncetion conn, String remotePath){

try {

SFTPv3Client sft = new SFTPv3Client(conn);

Vector<?> v = sft.ls(remotePath);

       

for(int i=0;i<v.size();i++){

SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();

s = (SFTPv3DirectoryEntry) v.get(i);

//文件名

String filename = s.filename;

//文件的大小

Long fileSize = s.attributes.size;

}

sft.close();

       

} catch (Exception e1) {

e1.printStackTrace();

}

}

/**

 * 在远程LINUX服务器上,在指定目录下,删除指定文件

 * @param[in] fileName 文件名

 * @param[in] remotePath 远程主机的指定目录

 * @return

 */

public void delFile(String remotePath, String fileName){

try {

SFTPv3Client sft = new SFTPv3Client(conn);

//获取远程目录下文件列表

Vector<?> v = sft.ls(remotePath);

   

for(int i=0;i<v.size();i++){

SFTPv3DirectoryEntry s = new SFTPv3DirectoryEntry();

s = (SFTPv3DirectoryEntry) v.get(i);

//判断列表中文件是否与指定文件名相同

if(s.filename.equals(fileName)){

//rm()方法中,须是文件绝对路径+文件名称

sft.rm(remotePath + s.filename);

}

sft.close();

} catch (Exception e1) {

e1.printStackTrace();

}

}


/**

 * 执行脚本

 * @param conn Connection对象

 * @param cmds 要在linux上执行的指令

 */

public int exec(Connection conn, String cmds){

InputStream stdOut = null;

InputStream stdErr = null;

int ret = -1;

try {

//在connection中打开一个新的会话

Session session = conn.openSession();

//在远程服务器上执行linux指令

session.execCommand(cmds);

//指令执行结束后的输出

stdOut = new StreamGobbler(session.getStdout());

//指令执行结束后的错误

stdErr = new StreamGobbler(session.getStderr());

//等待指令执行结束

session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);

    //取得指令执行结束后的状态

ret = session.getExitStatus(); 

conn.close();

}catch(Exception e){

e.printStackTrace();

}

 

return ret;

}



本文标题:使用java登录远程LINUX并对服务实现各种操作
本文链接:http://www.kyjszj.com/htzq/206.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

有好的文章希望我们帮助分享和推广,猛戳这里我要投稿

返回列表
上一篇:
下一篇:

发表评论中国互联网举报中心

快捷回复:

    评论列表 (暂无评论,共451人参与)参与讨论

    还没有评论,来说两句吧...