sharp share sorting utility

This commit is contained in:
Pyro57000
2023-11-20 10:48:15 -06:00
committed by GitHub
parent 1a5c05cf8c
commit 43370d1f53
3 changed files with 71 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
use std::fs;
use std::env;
use std::io::Write;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() != 3{
print!("
Usage:
sharpshares_sorter /path/to/sharpshares/output /path/to/save/output
");
}
else{
let mut writable: Vec<&str> = Vec::new();
let mut readable: Vec<&str> = Vec::new();
let mut outfile = fs::File::create(&args[2]).expect("error creating output file");
let shares = fs::read_to_string(&args[1]).expect("error reading shares file");
let shares_vec: Vec<&str> = shares.split("\n").collect();
for share in shares_vec{
if share.len() != 0{
let share_vec: Vec<&str> = share.split(" ").collect();
let permission = share_vec[0];
let share_name = share_vec[1];
if permission.contains("r"){
let share_name_trimmed = share_name.trim_end();
readable.push(share_name_trimmed);
}
if permission.contains("w"){
let share_name_trimmed = share_name.trim_end();
writable.push(share_name_trimmed);
}
}
}
println!("writable!");
writeln!(outfile, "********************************Writable*********************************").expect("error writing writable to outfile");
writeln!(outfile, "++++++++++++++++++++++++++++++++admin access+++++++++++++++++++++++++++++").expect("error writing admin access to outfile");
for share in &writable{
if share.contains("C$") || share.contains("c$") || share.contains("Admin$"){
println!("{}", share);
writeln!(outfile, "{}", share).expect("error writing admin share to outfile");
}
}
writeln!(outfile, "++++++++++++++++++++++++++++++END OF ADMIN ACCESS++++++++++++++++++++++++++").expect("error writing admin ending porint");
for share in &writable{
println!("{}",share);
writeln!(outfile, "{}", share).expect("error writing writable shares to outfile");
}
println!("===========================================================");
println!("readable!");
writeln!(outfile, "*******************************readable**********************************").expect("error writing readable to outfile");
for share in readable{
println!("{}", share);
writeln!(outfile,"{}", share).expect("error writing readable share to outfile");
}
}
}