通过node.js将字符串传递给Shell脚本的标准输入

时间:2019-05-13 21:12:39

标签: javascript node.js

我正在使用simple-ssh执行驻留在远程服务器上的shell脚本。但是shell脚本在执行过程中等待用户输入。我需要通过node.js / javascript将密码和目录名作为字符串传递。

./myscript.sh

Verifying .....

Retrieving information...
SSH password: 
Directory to store the output[/home]: 

如何在javascript中将密码和目录名称作为字符串传递?

理想情况下,我想创建一个变量

let ssh_pwd = 'password'
let dir_path = 'path/to/dir'

并将这些作为字符串传递给ssh.exec

到目前为止,我已经尝试使用simple-ssh登录到远程服务器并执行以下命令。

cons { SSH } = require('simple-ssh');

var ssh = new SSH({
    host: hostname,
    user: username,
    pass: passwrod});

ssh.exec('cd /path/to/script/directory && ./myscript.sh --ask-pass' , {
            pty: true,
            out: function(stdout) {
                console.log(stdout);
            },
     })
    .start

1 个答案:

答案 0 :(得分:0)

注意事项:

首先有一个错字(也许是复制/粘贴问题):

cons { SSH } = require('simple-ssh'); // <-- should be const

SSH不是软件包named export的{​​{1}},而是simple-ssh,因此您必须像这样导入:

default export

您可以使用const SSH = require('simple-ssh'); 的{​​{1}}选项来传递要执行的目录。要将输入传递给baseDir,可以使用config

./myscript.sh