Files
ipset-management/src/ipset.rs
2025-08-01 00:11:22 +08:00

23 lines
648 B
Rust

use rust_util::{opt_result, simple_error, XResult};
use std::ffi::OsStr;
use std::process::Command;
const CMD_IPSET: &str = "ipset";
fn execute_ipset<I, S>(args: I) -> XResult<(Vec<u8>, Vec<u8>)>
where
I: IntoIterator<Item = S>,
S: AsRef<OsStr>,
{
let mut cmd_ipset = Command::new(CMD_IPSET);
cmd_ipset.args(args);
let cmd_output = opt_result!(cmd_ipset.output(), "Execute ipset with failed: {}");
if !cmd_output.status.success() {
return simple_error!(
"Execute ipset not failed, exit code: {:?}",
cmd_output.status.code()
);
}
Ok((cmd_output.stdout, cmd_output.stderr))
}