Узел ssh2 для ssh и sudo su в качестве пользователя и запуска команд - PullRequest
0 голосов
/ 08 мая 2019

Используя модуль узла 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, как любому пользователю, и затем запустить команды

...