Flyt computer til andet admin-site
Source: Download script
Last Updated: 11. September 2025 by Agnete Moos (agms@sonderborg.dk)
Parameters:
Navn | Type | Standardværdi | Påkrævet |
---|---|---|---|
Click to see the source code
#!/bin/bash
ADMIN_URL=$1
SITE=$2
BEARER_TOKEN=$3
if [ "$(id -u)" != "0" ]; then
echo "This program must be run as root"
exit 1
fi
# Stop unattended-upgrades.service, as it might block installation of git
systemctl stop unattended-upgrades.service
# Required for pip install from a git repo
apt install git jq -y
# Force install client version from github, set this as fallback default as well
DEFAULT_OS2BORGERPC_CLIENT=https://github.com/OS2borgerPC/os2borgerpc-client.git
set_os2borgerpc_config os2borgerpc_client_package "$DEFAULT_OS2BORGERPC_CLIENT"
pip install --force-reinstall "git+$DEFAULT_OS2BORGERPC_CLIENT@2.5.1" &> /dev/null
ORIGINAL_SITE=$(get_os2borgerpc_config "site")
ORIGINAL_ADMIN_URL=$(get_os2borgerpc_config "admin_url")
if [ -n "$SITE" ]; then
set_os2borgerpc_config site "$SITE"
fi
if [ -n "$ADMIN_URL" ]; then
set_os2borgerpc_config admin_url "$ADMIN_URL"
fi
# Extract UID from the config file to locate current name through API
CONFIG_FILE="/etc/os2borgerpc/os2borgerpc.conf"
PC_UID=$(grep '^uid:' "$CONFIG_FILE" | cut -d ':' -f2 | xargs)
# Perform the curl request and extract the name using hostname as backup
COMPUTER_NAME=$(get_os2borgerpc_config "hostname")
if [ -n "$PC_UID" ]; then
NAME=$(curl -s -X 'GET' \
"$ORIGINAL_ADMIN_URL/api/system/computers" \
-H "accept: application/json" \
-H "Authorization: Bearer $BEARER_TOKEN" | \
jq -r --arg uid "$PC_UID" '.[] | select(.uid == $uid) | .name')
if [ -n "$NAME" ]; then
echo "Computer name: $NAME"
COMPUTER_NAME=$NAME
else
echo "No computer found with UID: $PC_UID"
fi
else
echo "UID not found in $CONFIG_FILE"
fi
# Try to register pc on new admin-site
if ! os2borgerpc_register_in_admin $COMPUTER_NAME; then
set_os2borgerpc_config site "$ORIGINAL_SITE"
set_os2borgerpc_config admin_url "$ORIGINAL_ADMIN_URL"
echo "Registration failed"
exit 1
fi
Beskrivelse
Dette er et script til at migrere en computer fra et admin site til en anden.
Vær opmærksomme på følgende:
Migreringsscriptet er ikke testet med alle tænkelige setups, og det anbefales derfor at tage følgende forholdsregler:
- Start med at migrere én computer, der er let tilgængelig fysisk i tilfælde af problemer.
- Test de samme scripts fra den gamle admin-site på den migrerede computer.
- Fortsæt med at migrere i små grupper iterativt, og gentag testene.
- Undgå at migrere alle computere på én gang.
- Ved kørsel skifter scriptet status til Afsendt, men vil ikke ændre status til Udført, da computeren ikke længere kommunikerer med den gamle admin-site efter flytningen.
Scripts der er kørt på en computer, migreres ikke automatisk.
- Den nye admin-site vil registrere computeren som en “ny” BorgerPC.
-
Det anbefales at genkøre de relevante scripts manuelt på den nye site for at genskabe opsætningen.
- Migreringsscriptet har en simpel backupmekanisme hvis migreringen fejler. Dette er primært tiltænkt til hvis man indtaster en invalid URL eller site.
Inputparametre (alle er valgfrie):
Admin URL (string):
Beskrivelse: URL'en til den nye admin-site, hvor computeren skal forbindes. Dette er den samme URL, som man taster i sin browser for at tilgå admin-site.
Standard: Hvis parameteren ikke angives, bevares den eksisterende admin URL.
Eksempel: https://os2borgerpc.admin-site.dk.
Site (string):
Beskrivelse: UID for den nye site, som computeren skal tilknyttes. UID'et kan findes under "Site-indstillinger" på den nye admin-site.
Standard: Hvis parameteren ikke angives, bevares den eksisterende site.
Eksempel: default.
Bearer token (string):
Beskrivelse: API-nøgle fra den admin-site, computeren migreres fra. Bruges til at sikre, at computernavnet overføres med både store og små bogstaver.
Standard: Hvis parameteren ikke angives, vil computernavnet blive overført med kun små bogstaver.
Hvor findes det: Under "Site-indstillinger" -> "Håndter API-nøgler" på den gamle admin-site. Hvis der ikke findes en eksisterende nøgle, kan en ny genereres.
Eksempel: eyJhbGciOiJIUzI1NiIsInR5cCI6....