Skip to content
/ spurs Public

Utilities for setting up and running experiments remotely

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mark-i-m/spurs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spurs and spurs-util

Build

spurs: Latest version Documentation

spurs-util: Latest version Documentation

Utilities for setting up and running experiments remotely.

spurs is heavily inspired by spur.py but it also contains a bunch of utility routines that I have found useful. I will periodically add more as I find useful ones or people submit PRs.

Features

This repo contains two crates:

  1. spurs: A straight-forward, well-typed, idiomatic interface for running commands remotely via SSH, similar to spur.py.

  2. spurs-util: Utilities for common Linux admin operations, such as adding a user to a group or turning on a swap device or installing a package. This is by no means a complete set of such functions. So far it just includes the ones I have run into. Feel free to make PRs adding more.

Disclaimer

While I do intend to follow semver for the API, I don't not make guarantees about the format of output to stdout or stderr. It is not intended that one should try to parse the stdout/stderr output generated by spurs.

Example

use spurs::{cmd, ssh::{SshShell, Execute}};

const FOO: &str = "foo";
const HOST: &str = "1.2.3.4:22";
const USER: &str = "user";

// Create an SSH connection with host.
// (host doesn't have to be a `&str`; it can be any `ToSocketAddrs` type)
let shell = SshShell::with_default_key(USER, HOST)?;

// Run some commands on HOST as USER.

// ps -e | grep foo
shell.run(cmd!("ps -e | grep {}", FOO).use_bash())?;

// cd /home/user ; ls -a | grep user
shell.run(cmd!("ls -a | grep user").cwd("/home/user/").use_bash())?;

// sudo yum install -y qemu-kvm
shell.run(spurs::centos::yum_install(&["qemu-kvm"]))?;

It's also possible to

  • run commands in another thread and later wait for that thread
  • capture the stdout and stderr
  • allow a command to fail

For more information please see the spurs docs or the spurs-util docs. Feel free to open an issue on the repo if anything is unclear.

Usage

Add the crate spurs to your Cargo.toml dependencies.

Requires stable Rust 1.32 or newer.

License

Licensed under either of

at your option.

About

Utilities for setting up and running experiments remotely

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages