0

I am trying to execute command yum install <package_name> on a remote linux server using ssh2-promise package, But I could not get the command response back for further processing and validation.

I have tried the following,

// Node:33528) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
(async function(){
        try {
            const data = await this.ssh.exec("yum  repolist all");
            console.log("resp: ", data); 
            } catch(e) {
                console.log(e)
            }
        })();  // This fails 

        const socket = await this.ssh.spawn("yum repolist all");
        socket.on('data', function(data) {
              console.log("resp: " , data); // I get binary data not the human readable output
        });


        // Node:33528) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
        this.ssh.exec("yum install <name>").then((data) => {
            console.log("resp: yum repolist all output: ", data); // This also fails and throws exception

        });

        // Throws again (Node:33528) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
        const output = await this.ssh.exec("yum upgrade <name>");
        console.log("resp: ", output) 

I tried with proper try catch block as well, still throws unhandledPromise Exception. Can someone help me figure this out?

2 Answers 2

2

i guess you get something like following in the output:

<Buffer 5b 73 75 64 6f 5d 20 70 61 73 73 77 6f 72 64 20 66 6f 72 20 64 61 72 74 68 63 75 63 75 6d 62 65 72 3a 20>

all you have to do is convert it to string using toString() function of JS.

Sign up to request clarification or add additional context in comments.

2 Comments

Yes, I will try and get back
it worked, i will go with the exec function instead of this and i made a mistake of calling async fn inside an async function
0

I made a mistake of calling an async function inside another async function , something like below,

public async runCommand() {
     (async function () {
    try {
        const data = await ssh.exec("yum repolist all");
        console.log("resp: ", data);
    } catch (e) {
        console.log("Error - " + e);
    }
    })(); 
}

Changed the function like below and it worked .

public async runCommand() { 
    try {
        const data = await ssh.exec("yum repolist all");
        console.log("resp: ", data);
    } catch (e) {
        console.log("Error - " + e);
    }
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.