Сканирует есть 10.13.177.0/24 и по доступным ip коннектится и выполняет команду.
При этом смотрит что-бы ОС не была Linux.
Так же есть лист на которые ip не нужно заходить.
#!/usr/local/bin/bash noDeployHosts=( 10.13.177.17 10.13.177.50 ) _execCmd() { host=$1 ssh root@$host '[ "`uname`" == "Linux" ] || exit 1' || scp dist/file root@$host:/usr/libexec/ ssh root@$host '[ "`uname`" == "Linux" ] || exit 1' || scp dist/file.cfg root@$host:/usr/ } while read host do hosts=( "${hosts[@]}" $host ) done < <(fping -a -g 10.13.177.0/24 ) for host in "${hosts[@]}"; do processHost=1 for item in "${noDeployHosts[@]}"; do if [ "$item" == "$host" ]; then processHost=0 break; fi done if [ "$processHost" -eq "1" ]; then _execCmd $host #count=$(( count + mailc )) #echo $count fi