use rust_iscsi_initiator::connection::IscsiConnection; use rust_iscsi_initiator::tools::inquiry; use std::env; /// iscsi-inq tool - Inquiry SCSI device #[tokio::main] async fn main() { env_logger::init(); let args: Vec = env::args().collect(); if args.len() < 2 { println!("Usage: iscsi-inq "); println!("Example: iscsi-inq iscsi://192.168.1.1:3260/iqn.target/0"); return; } let url = &args[1]; println!("Inquiring device: {}", url); // Parse URL (simplified) let parts: Vec<&str> = url.split('/').collect(); if parts.len() < 5 { eprintln!("Invalid URL format"); return; } let portal = parts[2]; let target = parts[3]; let lun: u64 = parts[4].parse().unwrap_or(0); match IscsiConnection::connect(portal).await { Ok(mut conn) => { match conn.login("iqn.initiator", target).await { Ok(_) => match inquiry(&mut conn, lun).await { Ok(inquiry) => { println!("Device Information:"); println!(" Type: {}", inquiry.peripheral_type); println!(" Vendor: {}", inquiry.vendor_id); println!(" Product: {}", inquiry.product_id); println!(" Revision: {}", inquiry.product_rev); } Err(e) => { eprintln!("Inquiry error: {}", e); } }, Err(e) => { eprintln!("Login error: {}", e); } } conn.close().await.ok(); } Err(e) => { eprintln!("Connection error: {}", e); } } }