{"_id":"n-brother","_rev":"8-a59de03a77ba1eeff23798e6e9343ebb","name":"n-brother","description":"N-Brother is watching your distributed system","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"n-brother","version":"1.0.0","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0"},"gitHead":"9083cea41b90a818048cbf2a9ddb4498b972b521","_id":"n-brother@1.0.0","_shasum":"74aa3137e293254325afc997f6b09cc873939c1d","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"74aa3137e293254325afc997f6b09cc873939c1d","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.0.tgz","integrity":"sha512-wUSL44/ELxumLExvWYO9XGuQvI2CDdPjtwBuY+EXwzkVoQBaWDqyZvnMfj2Fr6eQL2LqHUd6J1ARSFKAs/l5cA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBz0mBqI7RAD6u/946DFAg2J9uBQea/fSowqXDSWIDqQIhAKN6MDHyE1qTtSVpcczXVAxT5838UqegRSgKMdUYLoUC"}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.0.tgz_1516653193949_0.28968258504755795"}},"1.0.1":{"name":"n-brother","version":"1.0.1","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"gitHead":"95868a2a2ca01a16b405eae46d2d08e41c77b7d3","_id":"n-brother@1.0.1","_shasum":"13c609235224efbc1bfbb7483bc7148e35ff6e17","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"13c609235224efbc1bfbb7483bc7148e35ff6e17","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.1.tgz","integrity":"sha512-ll2QbltbapfunlYeLUZa68bMRMBtdWUFT9WdkNgTPAmUtYyCKOX20De2P+BNn/RNiJyJTxpbL9ZalvDWpGzAUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBtgG1KYg/8J+WWLwzEU2WLj8svsuY8qU9zsCyM6qMUcAiAcknZyA28RRIOiYWHQ4yWsOnFTLGQ/fsq8HtkL5vVfpQ=="}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.1.tgz_1516653587105_0.47264309879392385"}},"1.0.2":{"name":"n-brother","version":"1.0.2","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"gitHead":"c61c7b8cb27f3af585b500c9fc0d4d5ad4f3163b","_id":"n-brother@1.0.2","_shasum":"9fd17072e54cd944a4d441a9f3512f264ea57fc5","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"9fd17072e54cd944a4d441a9f3512f264ea57fc5","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.2.tgz","integrity":"sha512-vXdeUTK8OL+LgzmrtKWqq7XnWr8MhUAPOAwiQEfHbs5pvpV7EtDdp4uEejwYA+7dVYZ9mW8vIuFVs9XvNK8y5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB/kKBh3FtJbHmSuMm12neQGXGW1mRUzcAweiWV71poJAiBSHj3SKdUof9iNlfFp+gnvF/ts82NwOmFHtZsdaofLBw=="}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.2.tgz_1516663930615_0.42772984644398093"}},"1.0.3":{"name":"n-brother","version":"1.0.3","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"mocha test/*test.js"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.0"},"gitHead":"dd60416fa51b05965c15b5c9911153880f9af24b","_id":"n-brother@1.0.3","_shasum":"d7e2e32d5d222d2f3bf9c186c306a719f123f895","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"d7e2e32d5d222d2f3bf9c186c306a719f123f895","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.3.tgz","integrity":"sha512-dPn3CFQL6Rs5ficA+xSh7yS8EwEJOjGOhy9ByhL1Jt6V60YHhiSkkh/epvlK/K4HagPcFkoveeAhKiF5zPAUcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpMHUevbpFuC3hWjrvxWqYRn9MJRFRiyv3pNGlr0cMJAiBxv2qm1c3OOHqcqPWi73PXgIBlNDJwnReNPzn5SxEiSw=="}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.3.tgz_1516774848915_0.7282786308787763"}},"1.0.4":{"name":"n-brother","version":"1.0.4","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"mocha test/*test.js"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.0"},"gitHead":"8f4ced81f52f57b91cd2e19a6da805ac11e39e41","_id":"n-brother@1.0.4","_shasum":"6f4093494273d7e3ccd1b092756f2b253521105b","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"6f4093494273d7e3ccd1b092756f2b253521105b","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.4.tgz","integrity":"sha512-U1cDMx4czx0b6O59vWzolno2/EGcqyIDR6m2cgTo4Yzx4yg3Rab0f3OzHvogjcDP/pnaYFUtwyKCYQOWng9a4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAVTzTs9TBJ5ux/uax0OBMlM8qe1YdbKtdR0pBugBdh6AiArhSbb6qk8eDT1NlChUZCPsBSm+T+3HvyLxxHuLzhm1Q=="}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.4.tgz_1516777756577_0.3176187453791499"}},"1.0.5":{"name":"n-brother","version":"1.0.5","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"mocha test/*test.js"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.0"},"gitHead":"fdbe5d261065880856971e33ecfba23a5e2ed384","_id":"n-brother@1.0.5","_shasum":"aa792daa3dc16c37fe0b38758e70b5085cbb0e26","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"aa792daa3dc16c37fe0b38758e70b5085cbb0e26","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.5.tgz","integrity":"sha512-npsyQiJkJrgs2ncCX2r6QgCfM6SnLSAsdFAxBw+0yZdO/XwBuD3XZZA8jkLKf9togmFkJZmEP4mAzZoZn7uRpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBwCTThWmKFwW+wE2rkTloa1jq9HZI1eUsXHEW/+EHD8AiEAh5dTjXEF3zO4Evcs7kpMH/J9Z7/FceuEFKsM+lSvigY="}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.5.tgz_1516830062692_0.084785490995273"}},"1.0.6":{"name":"n-brother","version":"1.0.6","description":"N-Brother is watching your distributed system","main":"index.js","scripts":{"test":"mocha test/*test.js"},"bin":{"nbro":"./bin/n-brother","nbrod":"./bin/n-brother-daemon"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","dependencies":{"chalk":"^2.3.0","commander":"^2.13.0","ws":"^4.0.0"},"devDependencies":{"chai":"^4.1.2","mocha":"^5.0.0"},"gitHead":"92cb027b044595ece80a765d22f119b18a5240be","_id":"n-brother@1.0.6","_shasum":"10df9a795939e8a07032e96a7ac76babb312e727","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.4","_npmUser":{"name":"jungkumseok","email":"jungkumseok@gmail.com"},"dist":{"shasum":"10df9a795939e8a07032e96a7ac76babb312e727","tarball":"https://registry.npmjs.org/n-brother/-/n-brother-1.0.6.tgz","integrity":"sha512-QbO6vZA3IBxEWM1fBj4iDrMB49HAiZHuIsBI7988rcN5SGbAlPlTFMgQBmHPWbiS+kNwevpxN/nhvD+CEL0QAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRl0zdKt51eynz2a8G+VNDLKhR1Wdgx2+raxAbwh0hogIhALoXASK1wxVVumYyId58RySAqkbHr/aAQhkYkziWczYZ"}]},"maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-brother-1.0.6.tgz_1516940291482_0.9515723818913102"}}},"readme":"# N-Brother\n\n[![NPM](https://nodei.co/npm/n-brother.png?downloads=true)](https://nodei.co/npm/n-brother/)\n\nN-Brother is a tool for monitoring multiple machines from a single client shell.\n**Currently the communication does not have authentication or authorization. The messages are exchanged in plain-text. Running the daemon exposes your file-system for unauthenticated read access and is a security risk.**\n\n\n## Getting Started\n\n1. Install the N-Brother package from NPM (on all the remote machines and your local machine)\n```\n~$ sudo npm install -g n-brother\n```\n\n2. Start the N-Brother Daemon on the remote machines that you want to monitor.\n```\n~$ nbrod -p 8000\n```\nThe above command will bind the N-Brother daemon process to port 8000. It starts a WebSocket server that listens for incoming commands.\n\n3. Start the N-Brother Shell on your local machine.\n```\n~$ nbro\n```\nThe above command will start the interactive shell. Type \"help\" in the shell to see the list of available commands.\n\n3.a. From the Shell, you can add a remote machine like below:\n```\n$ add daemon1 ws://daemon1.example.com:8000\n```\n`daemon1` can be any string; this is the name of the remote machine that you give.\n`daemon1.example.com` should be replaced with either a DNS resolved host name or the remote machine's IP.\n\n3.b. Connect to the machines.\n```\n$ connect\n```\nThe shell will display the list of the machines, indicating whether they are connected or not. You can type `show` to see the list of machines.\n\n3.c. Execute a command on the remote machines.\n```\n$ grep 123 ~/some-log-file.log\n```\nThe shell will be 'pending' until all the remote machines return the grep output. Once all responses are received, the shell will display the output.\n\n\n## Commands\n\n### Shell commands\n\n1. `show`\n    - Show the list of machines\n2. `add {machine_id} {daemon_url}`\n    - Add a machine to the registry\n3. `remove {machine_id}`\n    - Remove a machine from the registry\n4. `connect`\n    - Connect to the machines\n5. `disconnect`\n    - Disconnect from the machines\n6. `help`\n    - Show the man page\n7. `exit`\n    - Exit the shell\n\n### Remote commands\n\n1. `grep {pattern} {file_path}`\n    - execute \"grep\" command on all the machines and retrieve the output\n","maintainers":[{"name":"jungkumseok","email":"jungkumseok@gmail.com"}],"time":{"modified":"2022-06-20T18:49:40.198Z","created":"2018-01-22T20:33:14.039Z","1.0.0":"2018-01-22T20:33:14.039Z","1.0.1":"2018-01-22T20:39:47.775Z","1.0.2":"2018-01-22T23:32:10.754Z","1.0.3":"2018-01-24T06:20:49.040Z","1.0.4":"2018-01-24T07:09:16.743Z","1.0.5":"2018-01-24T21:41:02.815Z","1.0.6":"2018-01-26T04:18:11.858Z"},"keywords":["debugger","distributed","logging"],"author":{"name":"Kumseok Jung","email":"jungkumseok@gmail.com","url":"https://jungabyte.com"},"license":"MIT","readmeFilename":"README.md"}