GithubHelp home page GithubHelp logo

batou9150 / jassh Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dacr/jassh

0.0 0.0 0.0 273 KB

High level scala SSH API for easy and fast operations on remote servers.

License: Apache License 2.0

Scala 99.37% Shell 0.63%

jassh's Introduction

JASSH - the SCALA SSH API Build Status License Codacy codecov

High level scala SSH API for easy and fast operations on remote servers.

This API is JSCH based. Interfaces are stable. Many helper functions are provided to simplify unix operations ps, ls, cat, kill, find, ..., an other goal of this API is to create an unix abstraction layer (Linux, Aix, Solaris, Darwin, ...).

One of the main difference of this API with others is that it can work with persisted shell sessions. Many commands can then be sent to an already running and initialized shell session ! Thanks to this feature you can greatly speed up your SSH shell performances, from 70 cmd/s to more than 500 hit/s ! There is no differences in API between persisted and not persisted shell sessions, that's the reason why the API looks very simple from scala point of view; when you execute a command in a shell persisted session you get directly the output of the command but not the return code. The return code will be accessible only indirectly using for example a "echo $?" command.

The current release doesn't provide full shell interaction with executed commands, you only send a command and get the result, but I'm currently working to provide full interactivity, to allow interaction with commands such as to provide data after the command is started (send a password once the prompt is visible, ...). This work is currently visible through SSHReact class and SSHReactTest test class.

In your build.sbt, add this (available in maven central) :

libraryDependencies += "fr.janalyse"   %% "janalyse-ssh" % version

(starting from 0.10, java 8 bytecodes are used, and scala 2.10, 2.11 and 2.12 are supported)

Latest version: Maven Scaladex

Scala docs


hello world script

It requires a local user named "test" with password "testtest", remember that you can remove the password, if your public key has been added in authorized_keys file of the test user.

#!/bin/sh
exec java -jar jassh.jar "$0" "$@"
!#
jassh.SSH.once("localhost", "test", "testtest") { ssh =>
  print(sh.execute("""echo "Hello World from $(hostname)" """))
}

Persisted shell session

#!/bin/sh
exec java -jar jassh.jar "$0" "$@"
!#
jassh.SSH.shell("localhost", "test", "testtest") { sh =>
  import sh._
  println(s"initial directory is ${pwd}")
  cd("/tmp")
  println(s"now it is ${pwd}")
}

Shell session to an SSH enabled PowerShell Server (windows)

This functions much the same as a regular SSH connection, but many of the unix like commands are not supported and the terminal behaves differently

import fr.janalyse.ssh._

val settings = SSHOptions(host = host, username=user, password = pass, prompt = Some(prompt), timeout = timeout)
val session = SSH(settings)

val shell = session.newPowerShell

println(shell.ls)
println(shell.pwd)

SSH Configuration notes

To turn on/off ssh root direct access or sftp ssh subsystem.

    Subsystem       sftp    ...     (add or remove comment)
    PermitRootLogin yes or no       (of course take care of security constraints)

AIX SSHD CONFIGURATION :

    vi /system/products/openssh/conf/sshd_config
    /etc/rc.d/rc2.d/S99sshd reload

LINUX SSHD CONFIGURATION

    vi /etc/ssh/sshd_config
    /etc/init.d/sshd reload

SOLARIS SSHD CONFIGURATION

    vi /usr/local/etc/ssh/sshd_config
    svcadm restart ssh

MAC OS X CONFIGURATION

    sudo vi /etc/sshd_config
    sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

jassh's People

Contributors

dacr avatar gangstead avatar n4to4 avatar ntbrock avatar davekim avatar slothspot avatar chebba avatar stefri avatar zaneli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.