Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to use std::process::Command - No such file or directory

Tags:

rust

I am trying to use the following Rust code to connect to EC2 instances.

#[test]
fn client_ssh_timeout2() {
    match Command::new("/usr/bin/ssh -i /tmp/.ssh/25.pem ubuntu@ip").spawn() {
        Ok(_) => println!("Able to ssh"),
        Err(e) => println!("{:?}", e),
    };
}

But I am getting the following error

Error { repr: Os { code: 2, message: "No such file or directory" } }

Has anyone been able to use std::process::Command or any other Rust library to connect to EC2 instances using PEM files? I tried using ssh2-rs(libssh2) but couldn't connect to EC2 instances.

like image 688
mchapala Avatar asked Dec 14 '22 02:12

mchapala


1 Answers

This appears to be a misunderstanding of how to use std::process:Command. Command::new takes just the program:

fn new<S: AsRef<OsStr>>(program: S) -> Command

Command::arg or Command::args are used to provide the arguments.

You will want something like

Command::new("/usr/bin/ssh")
    .args(&["-i", "/tmp/.ssh/25.pem", "ubuntu@ip"])
    .spawn()
like image 194
Shepmaster Avatar answered Dec 19 '22 10:12

Shepmaster