我想在AWS Lambda Nodejs中创建一个可以向Linux机器发送一些SSH命令的函数。有可能吗?
我知道有一些nodejs模块可以做到这一点,但AWS Lambda Nodejs没有它们,我也不想让任何EC2参与这个Lambda。
我只想知道如何通过AWS Lambda函数在Linux机器上执行某些命令,无论是通过SSH还是其他一些我无法想到的方法。
答案 0 :(得分:1)
这篇文章现在已经相对陈旧了,但对于发现这一点的人来说,AWS发表了一篇博文,主要描述了你所寻找的内容:https://aws.amazon.com/fr/blogs/compute/scheduling-ssh-jobs-using-aws-lambda/
很明显,AWS博客文章描述了如何将其用于AWS服务,但该示例仍然使用python。
答案 1 :(得分:0)
选项数量:您可以从Python开始使用ssh,使用来自nodejs的https://www.npmjs.com/package/simple-ssh等软件包。
答案 2 :(得分:-1)
可以确认这是用于Alexa和simple-ssh的lambda。注意事项:ssh.on(“close”是必需的,因为否则lambda函数将在SSH命令完成工作之前关闭。(Lambda关闭alexa.execute调用。)
这是“ssh lambda aws”的谷歌搜索结果之一,所以我在这里发帖,希望能为其他需要这样做的人节省一些时间。
工作示例:https://github.com/PockyBum522/alexa_nodejs_send_ssh_commands_lambda
var SSH = require('simple-ssh');
var Alexa = require("alexa-sdk");
var ssh = new SSH({
host: 'yourserver.com',
user: 'username',
key: `-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEApQtRxugrDMU8YNBy2j2Lyk6yAxMSKaiusrNUamXKLxFvdlZ1
6HCN+jjaE7q8OYFEmq9l2B5U8GCYMFldXWBxIv7fvRWyi1ZTw3olaZ8DmGYwPKLM
TOQ3MOm/zcJZbiTY1/cx2CW6NupPX78O42hLKM2iJwp6epgxC5t2Vw==
-----END RSA PRIVATE KEY-----`
});
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.registerHandlers(handlers);
ssh.on("close", function () {alexa.execute()});
ssh
.exec('nohup /home/username/script.sh > /dev/null 2>&1 &', { // Nohup runs script in BG, > /dev/null redirects output. & also runs in BG. Trying to keep things fast to make alexa response time good.
out: console.log.bind(console)
})
.exec('exit', { // Also for trying to keep things fast.
out: console.log.bind(console)
}).start();
};
var handlers = {
'LaunchRequest': function(){
this.emit(':tell', 'Now opening the garage door.');
}
};