use std::time::Duration;
use zkteco::Zk;
fn main() -> zkteco::ZkResult<()> {
let mut args = std::env::args().skip(1);
let ip = args.next().expect("usage: get_users <ip> [port]");
let port: u16 = args.next().and_then(|p| p.parse().ok()).unwrap_or(4370);
let mut zk = Zk::builder(ip)
.port(port)
.timeout(Duration::from_secs(10))
.omit_ping(true)
.build();
zk.connect()?;
zk.disable_device()?;
let users = zk.get_users()?;
zk.enable_device()?;
zk.disconnect()?;
println!("{} users", users.len());
for u in users {
println!(
" uid={:<4} id={:<10} name={:<20} priv={} card={}",
u.uid, u.user_id, u.name, u.privilege, u.card
);
}
Ok(())
}