Используя модуль узла ssh2, это то, что мне нужно сделать
1. ssh на сервер как локальный пользователь
2. sudo как оракул: sudo su oracle
3. запустить команды
Я не могу sudo suracle и, следовательно, не могу выполнить какие-либо команды.
Локальный пользователь имеет право стать оракулом, поэтому пароль вводить не нужно.
Я могу запустить несколько команд, как одна, как -
cd /home;./run.sh
Но если мне нужно запустить команды, где первая команда
Судо Су Оракул; CD / дома; ./run.sh
Я не получаю ответ
// фрагмент кода
let fs = require('fs'),
Client = require('ssh2').Client;
const executeRemote = (command, remoteServer, user, privateKey) => {
return new Promise((resolve, reject) => {
let conn = new Client();
let outputData = '';
console.log('privatekey is '+privateKey);
conn.on('ready', function () {
conn.exec((command), function (err, stream) {
if (err) {
reject(err);
}
// eslint-disable-next-line no-unused-vars
stream.on('close', function (code, signal) {
console.log('outputData is ', outputData);
console.log('code is '+code);
if (code === 0)
resolve(outputData);
else
reject(outputData);
conn.end();
}).on('data', function (data) {
//console.log('data is ', data.toString());
outputData = outputData + data.toString();
}).stderr.on('data', function (data) {
console.log('stderr data Error- '+ data.toString());
//check if data.toString() has WARNING
let regex = '[WARNING]';
if (data.toString().match(regex))
outputData = outputData + data.toString();
else
reject(new Error('Failed to run the command- ' + command + ' .Error- ' + data.toString()));
});
});
}).connect({
host: remoteServer,
port: 22,
username: user,
privateKey: require('fs').readFileSync(privateKey)
});
});
* * 1016};
Как только я смогу использовать ssh как локальный пользователь, я хочу запустить команду sudo как oracle, а затем запустить другие команды.
Есть ли фрагмент кода, которым можно поделиться, как sudo su, как любому пользователю, и затем запустить команды