You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.4 KiB
81 lines
1.4 KiB
#!/bin/bash -eu
|
|
|
|
HOSTS=""
|
|
|
|
proba() {
|
|
local n=$(($RANDOM%100))
|
|
[ $n -lt $1 ] && return 0 || return 1
|
|
}
|
|
|
|
connect() {
|
|
local l="$(seq 1 $S | tr ' ' '\n' | sort -R | tr '\n' ' ')"
|
|
local n=$S
|
|
|
|
echo "*** n=$n"
|
|
|
|
NETWORKS=""
|
|
|
|
proba 100 && {
|
|
s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1))
|
|
echo "(100) l:$l n:$n s:$s"
|
|
NETWORKS="$NETWORKS \$NET_$s"
|
|
|
|
echo "192.168.$s.${NET[$s]} $1" >> hosts
|
|
NET[$s]=$((${NET[$s]}+1))
|
|
|
|
echo -e "" >> $1.interfaces
|
|
}
|
|
|
|
proba 50 && {
|
|
s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1))
|
|
echo "(50) l:$l n:$n s:$s"
|
|
NETWORKS="$NETWORKS \$NET_$s"
|
|
echo "192.168.$s.${NET[$s]} $1" >> hosts
|
|
NET[$s]=$((${NET[$s]}+1))
|
|
}
|
|
|
|
proba 20 && {
|
|
s=$(echo $l | cut -d ' ' -f $n); n=$(($n-1))
|
|
echo "(20) l:$l n:$n s:$s"
|
|
NETWORKS="$NETWORKS \$NET_$s"
|
|
echo "192.168.$s.${NET[$s]} $1" >> hosts
|
|
NET[$s]=$((${NET[$s]}+1))
|
|
}
|
|
}
|
|
|
|
build() {
|
|
local n
|
|
declare -a NET
|
|
|
|
echo "PWD=$PWD"
|
|
|
|
# Nombre de machines
|
|
|
|
N=8
|
|
|
|
# Nombre de switchs
|
|
S=5
|
|
|
|
set -x
|
|
for i in $(seq 1 $S); do
|
|
NET[$i]=1
|
|
done
|
|
set +x
|
|
|
|
rm -f hosts
|
|
|
|
i=1;
|
|
while [ $i -le $N ]; do
|
|
n=vm-$i
|
|
rm -f $n.interfaces
|
|
vdn-build $n
|
|
connect $n
|
|
echo "N=$NETWORKS"
|
|
vdn-config $n GUEST_SYS "debian/buster"
|
|
vdn-config $n NETWORKS "$NETWORKS"
|
|
vdn-config $n MEMORY "256"
|
|
i=$(($i+1))
|
|
done
|
|
}
|
|
|