This Rust library provides an asynchronous interface to interact with the Mikrotik API.
- No Unsafe Code 🛑: Built entirely in safe Rust, ensuring that your application is secure and free from memory-related vulnerabilities.
- Concurrent Commands 🚦: Supports running multiple Mikrotik commands concurrently, with each command and its response efficiently managed via dedicated channels.
- Asynchronous 🕒: Built on top of the Tokio runtime, this library offers non-blocking I/O operations.
- Error Handling
⚠️ : Designed with error handling in mind, ensuring that network or parsing errors are gracefully handled and reported back to the caller.
To use this library in your project, run the following command in your project's directory:
cargo add mikrotik-rs
Alternatively, you can add the library to your Cargo.toml
file manually:
[dependencies]
mikrotik-rs = "0.2.0"
tokio = { version = "1", features = ["full"] }
Ensure you have Tokio set up in your project as the library relies on the Tokio runtime.
use mikrotik_rs::{command::CommandBuilder, device::MikrotikDevice};
use tokio;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize the MikrotikClient 🤖 with the router's address and access credentials
let device = MikrotikDevice::connect("192.168.122.144:8728", "admin", Some("admin")).await?;
// Execute a command 📝
let get_system_res = CommandBuilder::new()
.command("/system/resource/print")
// Send the update response every 1 second
.attribute("interval", Some("1"))
.build();
let response_channel = device.send_command(get_system_res).await;
// Listen for the command's response 🔊
while let Some(res) = response_channel.recv().await {
println!(">> Get System Res Response {:?}", res);
}
Ok(())
}
For more detailed information on the library's API, please refer to the documentation.
Contributions are welcome! Whether it's submitting a bug report 🐛, a feature request 💡, or a pull request 🔄, all contributions help improve this library. Before contributing, please read through the CONTRIBUTING.md file (if available) for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
This library is not officially associated with Mikrotik. It is developed as an open-source project to facilitate Rust-based applications interacting with Mikrotik devices.