无法使用simple-ssh npm模块的.exec()方法执行“hive -e'select * from table”

时间:2016-06-14 14:39:47

标签: node.js shell unix ssh npm

我无法在nodejs中使用simple-ssh模块hive -e执行.exec()命令。
我认为单引号/双引号'"存在问题。我不知道哪个引号按什么顺序排列。我尝试了很多组合,但都没有奏效。
以下是代码:

var runSSH(obj){
    var ssh = new SSH({
        host: remote1,
        user: 'root',
        timeout: 1500000,
        key: require('fs').readFileSync("C:/Users/Aiman/Desktop/hRep_prv"),
        agent: process.env.SSH_AUTH_SOCK,
        agentForward: true
    });

    ssh.exec('timeout 900 ssh -i /root/rsaPrvtKeyPath/to/remoteHost2 '+remoteHost2+' \'for i in '+remote3+' '+remote4+'; do clush -w ${i} "hive -e \'select * from table_name limit 3;\'" done\' ',{
            out: function(stdout) {
                devHive_check += stdout;
                obj.devHive_check = devHive_check;
                console.log(stdout);
            }
        }) //-->not executing
        .exec('timeout 300 ssh -i /root/rsaPrvtKeyPath/to/remoteHost2 '+remoteHost2+' \'for i in '+remote3+' '+remote4+'; do clush -w ${i} "ps -ef | grep HiveServer2"; done;\' ',{
            out: function(stdout) {
                devHS2_check += stdout;
                obj.devHS2_check = devHS2_check;
                console.log(stdout);
            }
        })//-->running fine
        .exec('echo "parse and save"',{
            out: function(){
                parseData(obj);
                ssh.end();
            }
        }).start(); //-->running fine
}

我正在登录remoteHost1,运行几个shell脚本(运行得很好),然后我正在对{Remote} 2进行ssh检查Hive(hive正在remote3和remote4上运行) 。
HiveServer2运行正常,但Hive不是 请帮帮我。

1 个答案:

答案 0 :(得分:0)

现在解决了。
而不是hive中的单引号,它需要一个doulbe引号,即代替行ssh.exec('timeout 900 ssh -i /root/rsaPrvtKeyPath/to/remoteHost2 '+remoteHost2+' \'for i in '+remote3+' '+remote4+'; do clush -w ${i} "hive -e \'select * from table_name limit 3;\'" done\' ',{
我做了 ssh.exec('timeout 900 ssh -i /root/rsaPrvtKeyPath/to/remoteHost2 '+remoteHost2+' \'for i in '+remote3+' '+remote4+'; do clush -w ${i} "hive -e \\\"select * from table_name limit 3;\\\" " done\' ',{,它有效。
感谢@mscdex的支持。