Skip to content

Simple Java API for sending terminal commands via SSH and transferring files using SCP and SFTP

Notifications You must be signed in to change notification settings

Top-Q/ssh-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ssh-client

Simple Java API for sending terminal commands via SSH and transferring files using SCP

Q: There is already JCSH and other Java libraries, why do we need another one?

A: This client is using JCSH. This is only a simpler API for the more common operations

Usage

Sending commands with different prompts:

try (SshTerminal terminal = SshTerminal.newTerminalUsingCreds(cfg.host(), cfg.username(), cfg.password())) {
    var response = terminal.runCommand(new SshCommand("rm delme.txt"));
    System.out.println(response);
    response = terminal.runCommand(new SshCommand("touch delme.txt"));
    System.out.println(response);
    response = terminal.runCommand(new SshCommand("sudo chown root delme.txt", ":"));
    System.out.println(response);
    response = terminal.runCommand(new SshCommand("1"));
    System.out.println(response);
    response = terminal.runCommand("ls -la | grep delme");
    System.out.println(response);
}

Command with timeout

try (SshTerminal terminal = SshTerminal.newTerminalUsingCreds(cfg.host(), cfg.username(), cfg.password())) {
    terminal.runCommand(new SshCommand("vim", 10));    
    System.out.println("Timeout exception is thrown. Not suppose to get to here");
}

Get file using SCP

try (SshTerminal terminal = SshTerminal.newTerminalUsingCreds(cfg.host(), cfg.username(), cfg.password())) {
    terminal.runCommand("echo 'Great Success' > myfile.txt");
    terminal.scpGetFile("remoteSource.txt","localDestination.txt");    
}

Put file using SFTP

try (SshTerminal terminal = SshTerminal.newTerminalUsingCreds(cfg.host(), cfg.username(), cfg.password())) {    
    terminal.sftpPutFile("localSource.txt","remoteDestination.txt");
}

Login with PEM file

try (SshTerminal terminal = SshTerminal.newTerminalUsingPem(cfg.host(), cfg.username(), cfg.privateKeyFile())) {
    val response = terminal.runCommand("ls -la");
    System.out.println(response.stdoutCleaned());
}

About

Simple Java API for sending terminal commands via SSH and transferring files using SCP and SFTP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages