Linux 使用Bash关闭Windows网络

Linux 使用Bash关闭Windows网络,linux,windows,terminal,command,shutdown,Linux,Windows,Terminal,Command,Shutdown,这是我当前的代码,它工作起来很慢 for i in {1..255..1}; do for j in {1..255..1}; do ip="10.8.$i.$j" sudo net rpc shutdown -I $ip -U Username%Password -t 1 -f echo $ip done done 我希望能够通过这些IP并尝试关闭它们。但如果该IP上没有PC,则必须等待它超时,然后再尝试下一个。那么,如何查找和关闭网络上的所有windows

这是我当前的代码,它工作起来很慢

for i in {1..255..1}; do
  for j in {1..255..1}; do
    ip="10.8.$i.$j"
    sudo net rpc shutdown -I $ip -U Username%Password -t 1 -f
    echo $ip
  done
done

我希望能够通过这些IP并尝试关闭它们。但如果该IP上没有PC,则必须等待它超时,然后再尝试下一个。那么,如何查找和关闭网络上的所有windows PC?(它们都有相同的凭证)

一个简单的解决方案就是并行运行一堆:

for i in {1..255..1}; do
  for j in {1..255..1}; do
    ip="10.8.$i.$j"
    sudo net rpc shutdown -I $ip -U Username%Password -t 1 -f &
    echo $ip
  done
  wait
done

每次运行255次,并等待它们全部完成。如果Windows支持,可以通过
xargs
sem
parallel
实现更智能、更灵活的并行化。

谢谢,效果很好。我只是把“等待”移到最后一个“完成”的下方,这样他们就可以同时运行了。虽然我对一个更好的解决方案持开放态度,但在我测试它时,它应该可以工作。