use rexpect::error::Error;
use rexpect::spawn_bash;
fn main() -> Result<(), Error> {
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} lines, {words} words, {bytes} chars");
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(())
}