|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Change this to your netid |
| 4 | +netid=kxp210004 |
| 5 | + |
| 6 | +# Root directory of your project |
| 7 | +PROJECT_DIR=/home/013/k/kx/kxp210004/LeaderElection |
| 8 | + |
| 9 | +# Directory where the config file is located on your local system |
| 10 | +CONFIG_LOCAL=$HOME/Desktop/LeaderElection/config.txt |
| 11 | + |
| 12 | +# Directory your java classes are in |
| 13 | +BINARY_DIR=$PROJECT_DIR/bin |
| 14 | + |
| 15 | +# Your main project class |
| 16 | +PROGRAM=Main |
| 17 | + |
| 18 | +i=0 |
| 19 | + |
| 20 | +declare -A uidHostMap |
| 21 | + |
| 22 | +cat $CONFIG_LOCAL | sed -e "s/#.*//" | sed -e "/^\s*$/d" | |
| 23 | +( |
| 24 | + mapfile -t configFile |
| 25 | + |
| 26 | + totalNodes=${configFile[0]} |
| 27 | + counter=0 |
| 28 | + |
| 29 | + while [[ $counter -lt $totalNodes ]] |
| 30 | + do |
| 31 | + line=(${configFile[$((counter))]}) |
| 32 | + uid="${line[0]}" |
| 33 | + host="${line[1]}" |
| 34 | + port="${line[2]}" |
| 35 | + |
| 36 | + uidHostMap[$uid]="$host,$port" |
| 37 | + |
| 38 | + counter=$((counter + 1)) |
| 39 | + done |
| 40 | + |
| 41 | + # Uncomment to debug the values in the uidHostMap hashmap. |
| 42 | + # for key in ${!uidHostMap[@]}; do |
| 43 | + # echo ${key} ${uidHostMap[${key}]} |
| 44 | + # done |
| 45 | + |
| 46 | + i=1 |
| 47 | + while [[ $i -lt $totalNodes ]] |
| 48 | + do |
| 49 | + line=(${configFile[$((i))]}) |
| 50 | + uid="${line[0]}" |
| 51 | + host="${line[1]}" |
| 52 | + port="${line[2]}" |
| 53 | + |
| 54 | + echo $uid $host $port |
| 55 | + |
| 56 | + neighborsArray=(${configFile[$i + totalNodes]}) |
| 57 | + neighCounter=0 |
| 58 | + |
| 59 | + for neighborUID in ${neighborsArray[@]}; do |
| 60 | + neighborsArray[$neighCounter]=${uidHostMap[${neighborUID}]} |
| 61 | + neighCounter=$(( neighCounter+1 )) |
| 62 | + done |
| 63 | + |
| 64 | + neighbors=$(printf "_%s" "${neighborsArray[@]}") |
| 65 | + |
| 66 | + echo "Neighbors ${neighbors}" |
| 67 | + |
| 68 | + osascript -e ' |
| 69 | + tell app "Terminal" |
| 70 | + do script "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no '$netid@$host' java -cp '$BINARY_DIR' '$PROGRAM' '$uid' '$host' '$port' '$neighbors'" |
| 71 | + end tell' |
| 72 | + |
| 73 | + i=$(( i + 1 )) |
| 74 | + done |
| 75 | +) |
0 commit comments