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:

  1. Start med at migrere én computer, der er let tilgængelig fysisk i tilfælde af problemer.
  2. Test de samme scripts fra den gamle admin-site på den migrerede computer.
  3. Fortsæt med at migrere i små grupper iterativt, og gentag testene.
  4. 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....