mirror of https://git.48k.eu/ogcli/
43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
function check_client_status {
|
|
local try=0
|
|
local ip="$1"
|
|
local state="$2"
|
|
local max_tries=${3-10}
|
|
|
|
while [ "$(./ogcli list clients | jq ".clients[] | select(.state != \"$state\" and .addr == \"$ip\")")" == "" ]
|
|
do
|
|
if [ "$try" -eq "$max_tries" ]; then
|
|
echo "Timeout!"
|
|
exit
|
|
fi
|
|
|
|
try=$((try+1))
|
|
echo "Waiting for client to exit from state $state..."
|
|
sleep 10
|
|
done
|
|
}
|
|
|
|
IP="192.168.56.11"
|
|
|
|
echo "Requesting WoL to client $IP"
|
|
./ogcli request wol --client-ip "$IP"
|
|
|
|
check_client_status $IP "WOL_SENT"
|
|
echo "Client is ready... partitioning client"
|
|
./ogcli setup disk --type dos --num 1 --part 1,LINUX,EXT4,40G --part 4,CACHE,CACHE,10G --format 1,4 --client-ip "$IP"
|
|
# ./ogcli request refresh --client-ip "$IP"
|
|
|
|
check_client_status $IP "BSY"
|
|
echo "Client is ready... restoring image"
|
|
./ogcli restore image --id 1 --disk 1 --part 1 --type tiptorrent --client-ip "$IP"
|
|
|
|
check_client_status $IP "BSY" 100
|
|
echo "Client is ready... setting boot mode to first disk first partition"
|
|
./ogcli set mode --mode 11 --client-ip "$IP"
|
|
|
|
check_client_status $IP "BSY"
|
|
echo "Client is ready... shutting down client"
|
|
./ogcli request poweroff --client-ip "$IP"
|