gpt4 book ai didi

node.js - Node ssh2 到 ssh 并以用户身份 sudo su 并运行命令

转载 作者:行者123 更新时间:2023-12-02 15:33:23 35 4
gpt4 key购买 nike

使用 Node ssh2模块,这就是我需要做的
1. 以本地用户身份 ssh 到服务器
2. sudo as oracle : sudo su oracle
3.运行命令

我无法 sudo su oracle,因此无法运行任何命令。本地用户有成为oracle的权限,无需提供密码。

我可以像一个一样运行多个命令 -cd/home;./run.sh

但是如果我需要运行第一个命令所在的命令sudo su oracle;cd/home; ./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)

});
});
};

一旦我可以作为本地用户进行 ssh,我想以 oracle 身份运行 sudo 命令,然后运行其他命令。是否有一个代码片段可以分享他们如何以任何用户身份执行 sudo su 然后运行命令

最佳答案

您可以根据提示输入密码:

ssh.exec('sudo su - ' + sudoUserName, { pty: true }, function (err, stream) {
stream.on('close', (code, signal) => {
//clean up
}).on('data', (data) => {

if (data.toString().substring(0, sudoUserName.length) === sudoUserName) {
//logged in successfully
}
else {
//enter password
stream.write(password + '\n');
}

}).stderr.on('data', (data) => {
stream.close();
});
}

关于node.js - Node ssh2 到 ssh 并以用户身份 sudo su 并运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56045988/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com