~ Initial commit
This commit is contained in:
71
index.ts
Normal file
71
index.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
const { pathExists, copy, readJSON } = require('fs-extra');
|
||||
const { join } = require('path');
|
||||
const { Client } = require('ssh2');
|
||||
|
||||
var configPath = join(__filename, '..', 'config.json');
|
||||
var defaultConfigPath = join(__filename, '..', 'defaultConfig.json');
|
||||
|
||||
var config: Config = null;
|
||||
|
||||
pathExists(configPath, (exists, err) => {
|
||||
if (err) throw err;
|
||||
if (exists) {
|
||||
readJSON(config, (configJson, err) => {
|
||||
if (err) throw err;
|
||||
config = configJson;
|
||||
|
||||
startPrepare();
|
||||
});
|
||||
} else
|
||||
copy(defaultConfigPath, configPath, (err) => {
|
||||
if (err) throw err;
|
||||
console.log(`----- Default config has been copied -----`);
|
||||
});
|
||||
});
|
||||
|
||||
function startPrepare() {
|
||||
console.log(`----- STARTING PREPARE ON ${config.addresses.length} DEVICES -----`);
|
||||
(function handle(i = 0) {
|
||||
if (config.addresses[i]) {
|
||||
var address = config.addresses[i];
|
||||
|
||||
console.log(`Starting on device ${address}`);
|
||||
|
||||
var ip = address.split(':')[0];
|
||||
var port = address.split(':')[1] != undefined ? address.split(':')[1] : 22;
|
||||
|
||||
const conn = new Client();
|
||||
conn
|
||||
.on('ready', () => {
|
||||
console.log(' Client :: ready');
|
||||
conn.shell((err, stream) => {
|
||||
if (err) throw err;
|
||||
stream
|
||||
.on('close', () => {
|
||||
console.log(' Stream :: close');
|
||||
conn.end();
|
||||
console.log(`Finished device ${address}`);
|
||||
handle(i + 1);
|
||||
})
|
||||
.on('data', (data) => {
|
||||
console.log(' Output: ' + data);
|
||||
});
|
||||
stream.end(`${config.payload.join('\n')}\nexit\n`);
|
||||
});
|
||||
})
|
||||
.connect({
|
||||
host: ip,
|
||||
port: port,
|
||||
username: config.username,
|
||||
password: config.password
|
||||
});
|
||||
} else console.log('----- FINISHED ALL DEVICES -----');
|
||||
})();
|
||||
}
|
||||
|
||||
interface Config {
|
||||
addresses: string[];
|
||||
username: string;
|
||||
password: string;
|
||||
payload: string[];
|
||||
}
|
||||
Reference in New Issue
Block a user