I'm looking at upgrading the node-red-contrib-interactive-ssh node. I'd like to add the ability to allow picking a host configuration from the ~/.ssh/config
file. The config dialog runs in a browser, so obviously doesn't have access (and shouldn't) to the host's file system.
How would I go about to provide a local function I could call to return some values read from a file on the host to use in the node's configuration file?
To answer my own question...
I added to the JS file interactive-ssh.js
RED.nodes.registerType('interactive-ssh', InteractiveSSH, {
settings: {
interactiveSshHosts: {
value: extractHosts(),
exportable: true
}
}
});
with extractHosts
a function on top of the file:
onst fs = require('fs');
const SSHConfig = require('ssh-config');
const getStringFromFile = (source) => {
const data = fs.readFileSync(source, {
encoding: 'utf8',
flag: 'r'
});
return data;
};
const extractHosts = () => {
let fileName = process.env.HOME + '/.ssh/config';
let cfgJson = getStringFromFile(fileName);
let cfg = SSHConfig.parse(cfgJson);
let result = [];
for (let entry of cfg) {
if (entry.param == 'Host') {
result.push(entry.value);
}
}
return result;
};
This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.