extern crate rexpect;
use rexpect::spawn_bash;
use rexpect::errors::*;
fn run() -> Result<()> {
let mut p = spawn_bash(Some(2000))?;
p.send_line("hostname")?;
let hostname = p.read_line()?;
p.wait_for_prompt()?; println!("Current hostname: {}", hostname);
p.send_line("wc /etc/passwd")?;
let (_, lines) = p.exp_regex("[0-9]+")?;
let (_, words) = p.exp_regex("[0-9]+")?;
let (_, bytes) = p.exp_regex("[0-9]+")?;
p.wait_for_prompt()?; println!("/etc/passwd has {} lines, {} words, {} chars", lines, words, bytes);
p.execute("ping 8.8.8.8", "bytes of data")?; for _ in 0..5 {
let (_, duration) = p.exp_regex("[0-9. ]+ ms")?;
println!("Roundtrip time: {}", duration);
}
p.send_control('c')?;
Ok(())
}
fn main() {
run().unwrap_or_else(|e| panic!("bash process failed with {}", e));
}