![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
It wraps around the ssh2-library, providing a promise-based approach to avoid nested callbacks and adding useful features such as command existence checking and persistent exec sessions.
The term ssh2
has two meanings here, the secure shell protocol
and the npm library
.
When referring to the npm library, this repo will always refer to it as the ssh2
-library.
HiveSsh is a wrapper library of the ssh2
-library with additional features and promise-based task execution instead of a callback function approach.
HiveSsh provides the following key features:
HiveSsh requires the following server environments:
npm i hivessh
import { SshHost } from "hivelib"
// connect
const myHost = await SshHost.connect({
host: "127.0.0.1",
//port: 22, (default 22)
//user: "root", (default root)
password: "123456789",
})
// or
const myHost = await SshHost.connect({
host: "127.0.0.1",
//port: 22, (default 22)
//user: "root", (default root)
privateKey: "..."
//passphrase: "123456789"
})
// or
const myHost = await SshHost.connect({
host: "127.0.0.1",
//port: 22, (default 22)
//user: "root", (default root)
privateKeyPath:"/home/user/.ssh/id_rsa",
//passphrase: "123456789"
})
Here are some using examples:
After connecting a SshHost
, you can use the promisified execution (and other asset features) directly on the SshHost
instance.
// check files in user home dir
const homeDirFiles = await myHost.exec("ls -al")
console.log("Home dir files:\n", homeDirFiles.out)
You can also execute commands on absolut path:
const etcDirFiles = await myHost.exec(
"ls -al",
{ pwd: "/etc" }
)
console.log("Etc files: ", etcDirFiles.out)
Get the hosts public ip address:
// check if curl command exists
const curlExists = await myHost.cmdExists("curl")
if(!curlExists){
myHost.close()
throw new Error("Curl is not installed on: " + myHost.settings.id)
}
const myIp = await myHost.exec("curl ifconfig.me")
console.log("Host public ip: " + myIp.out)
//other sources: `api.ipify.org`, `ipinfo.io/ip` or `ipecho.net/plain`
Also a git example:
// check if git command exists
const gitExists = await myHost.cmdExists("git")
if(!gitExists){
myHost.close()
throw new Error("Git is not installed on: " + myHost.settings.id)
}
// get git status
const gitStatus = await myHost.exec(
"git status",
{
pwd: "/home/tester/myrepo"
}
)
console.log("Git status:\n", gitStatus.out)
You can also use the promisified SFTP features via SshHost.sftp
.
const myBinary: Buffer = await myHost.sftp.readFile("/home/tester/my-binary")
const exampleConfig: string = await myHost.sftp.readFile("/etc/example/config.yml", "utf8")
You can find the types in the npmjs.com build (at /dist/essentials/SftpPromiseWrapper.d.ts).
You can also check out the ssh2
-library sftp docs for more background.
The abstract package manager (aka apm
) allows you to use apt
, dnf
, yum
or a custom implemented package manager
from one interface.
The apm
features are limited and generic, but you can upgrade your system and install, remove and list your packages.
// upgrade all packages using the abstract package manager
const apm = await myHost.getApm()
await apm.updateCache()
await apm.upgradeAll()
// install a package using the abstract package manager
await apm.install("git")
To create a custom apm
, you need to implement the following typescript interface:
https://github.com/NobleMajo/hivessh/blob/main/src/apm/ApmInterface.ts
After implementing the custom package manager, you need to register it globally using a checker function:
import { apmChecker, AbstractPackageManager } from "./apm/apm.js"
apmChecker.push(async (host) => {
if (await host.cmdExists("myapm")) {
const myApm: AbstractPackageManager = { ... }
return myApm
}
})
This function is called when the getApm()
is called and can return a package manager depending on the host.
Sessions are available so that the PWD (process working directory) and environment do not have to be specified for each individual command. These sessions store these settings persistently across multiple executions and can even resolve relative paths.
const session = host.session("/etc/example")
session.exec("ls -al") // is executed at /etc/example
session.exec("./myApp") // is using MY_APP_ENV_VAR
Example with more options:
const session = host.session("/etc/someapp")
//if sudo is needed enable it for following processes
session.sudo = true
// set process environment variables for following processes
session.env.TZ = "Europe/Berlin"
session.env.NODE_ENV = "production"
// change directory (without checking if exists) for following processes
// shortcut for session.env.PWD = "/etc/someapp/dist"
session.cd("/etc/someapp/dist")
// execute my app with earlier defined environment
session.exec("node myApp.js")
HiveSsh is built using the following technologies:
ssh2
-libraryContributions to this project are welcome!
Interested users can follow the guidelines provided in the CONTRIBUTING.md file to contribute to the project and help improve its functionality and features.
This project is licensed under the MIT license, which provides users with the flexibility and freedom to use and modify the software according to their needs.
This project is provided "as is".
Users are advised to consult the accompanying licence for further information on terms of use and limitations of liability.
FAQs
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
The npm package hivessh receives a total of 1,437 weekly downloads. As such, hivessh popularity was classified as popular.
We found that hivessh demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.