1use rexpect::error::Error;
2use rexpect::spawn_bash;
3
4fn main() -> Result<(), Error> {
5 let mut p = spawn_bash(Some(2000))?;
6
7 p.send_line("hostname")?;
9 let hostname = p.read_line()?;
10 p.wait_for_prompt()?; println!("Current hostname: {hostname}");
12
13 p.send_line("wc /etc/passwd")?;
15 let (_, lines) = p.exp_regex("[0-9]+")?;
17 let (_, words) = p.exp_regex("[0-9]+")?;
18 let (_, bytes) = p.exp_regex("[0-9]+")?;
19 p.wait_for_prompt()?; println!("/etc/passwd has {lines} lines, {words} words, {bytes} chars");
21
22 p.execute("ping 8.8.8.8", "bytes of data")?; for _ in 0..5 {
25 let (_, duration) = p.exp_regex("[0-9. ]+ ms")?;
27 println!("Roundtrip time: {duration}");
28 }
29 p.send_control('c')?;
30 Ok(())
31}