Socket
Socket
Sign inDemoInstall

diff-machines

Package Overview
Dependencies
51
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    diff-machines

diff files between machines


Version published
Weekly downloads
0
Maintainers
1
Install size
9.82 MB
Created
Weekly downloads
 

Readme

Source

diff-machines

diff files between machines over ssh.

Install

npm i maboiteaspam/diff-machines -g

Usage

diff-machines is a binary to install globally.


  diff files between machines over ssh.

  Usage
     diff-machines [hostA] [hostB] [files or services...]
     diff-machines [opts] -- [hostA] [hostB] [files or services...]

  Options
     -v    verbose
     -h    show help

 Examples
     diff-machines user@hostA:port user@hostB:port php .bashrc
     diff-machines -v -- vagrant vagrant php .bashrc
     diff-machines -h

Example

It will diff the service php and the file .bashrc between vagrant and vagrant boxes.

     diff-machines -v -- vagrant@localhost:2222 vagrant@localhost:2222 php .bashrc

The result is sent to stdout and produce unified patch with support of jsdiff

# node bin.js vagrant vagrant php .bashrc


Index: /etc/php.ini
===================================================================
--- /etc/php.ini
+++ /etc/php.ini



Index: .bashrc
===================================================================
--- .bashrc
+++ .bashrc

password credentials-like requires you to register the machine into a configuration file located on cwd. See below.

Then you must use its alias when you invoke diff-machines

     diff-machines -v -- vagrant vagrant php .bashrc

Configuration

diff-machines can read a configuration file located on cwd.

This file exports a function() which returns an object.

This configuration object can configure ssh hosts and services by name.

service are functions resolver which receives an sshConn of ssh2-utils and invoke call(err, filePath).

filePath is the location of the file identified for the given service.

configuration

{
    host1:{},
    host2:{},
    services:{
        service1: function (sshConn, done){ done(err, filePath); },
        service2: function (sshConn, done){ done(err, filePath); }
    },
}

In this example, php ini file is resolved with the help of the php binary itself. Cross-distro.

notFound, demonstrate that passing anything into err will effectively stop the program.

diff-svc.js


var SSH2  = require('ssh2-utils')

module.exports = function () {
  var ssh = new SSH2();
  return {
    'vagrant': {
      'host':'127.0.0.1',
      port: 2222,
      username: 'vagrant',
      password: 'vagrant'
    },
    'services': {
      'php': function (conn, done) {
        ssh.exec(conn, 'php -r "echo php_ini_loaded_file();"', function (err, stdout, stderr) {
          done(err, stdout)
        })
      },
      'notFound': function (conn, done) {
        done(false)
      }
    }
  }
};

Re-usable services

It s possible to pass in not service name of the local config object, rather than, module names.

So if one would export the php service to a module name php-ini, that would look like,

index.js


var SSH2  = require('ssh2-utils')
var ssh = new SSH2();

module.exports = function (conn, done) {
    ssh.exec(conn, 'php -r "echo php_ini_loaded_file();"', function (err, stdout, stderr) {
        done(err, stdout)
    });
}

It would then be possible to invoke diff-machines in such fashion


diff-machines -v -- vagrant vagrant php-ini .bashrc

Obviously you d need to npm i php-ini --save before that. Thus lock the remote dependency into a package json of your projects.

Dev

Kick-start your hacks like this,

git clone..
vagrant up
node bin.js vagrant vagrant php .bashrc
node bin.js -v -- vagrant vagrant php .bashrc

More

ssh & vagrant

~/.ssh/config

Host localhost
  HostName 127.0.0.1
  Port 2222
  StrictHostKeyChecking no

Keywords

FAQs

Last updated on 30 Dec 2015

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc