Files
scripts/vaultwarden-backup-helpers/import-from-json.sh
2026-10-18 19:01:07 -07:00

64 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Copyright 2026 Umbra Tools (umbratools.com)
# SPDX-License-Identifier: Apache-2.0
# Vaultwarden JSON Import Script
# This script imports a JSON export file into Vaultwarden using the Bitwarden CLI.
#
# Usage: ./import-from-json.sh <email> <input-file.json>
# Example: ./import-from-json.sh user@example.com vaultwarden-export-2026-09-19.json
#
# The master password can be provided via:
# - BW_MASTER_PASSWORD environment variable
# - Interactive prompt
set -euo pipefail
EMAIL="${1:-}"
INPUT_FILE="${2:-}"
VAULTWARDEN_URL="https://vault.bdmurphy.me"
if [ -z "$EMAIL" ] || [ -z "$INPUT_FILE" ]; then
echo "Usage: $0 <email> <input-file.json>"
exit 1
fi
if [ ! -f "$INPUT_FILE" ]; then
echo "ERROR: Input file not found: $INPUT_FILE"
exit 1
fi
# Check if bw CLI is available
if ! command -v bw &> /dev/null; then
echo "ERROR: Bitwarden CLI (bw) not found. Install with: npm install -g @bitwarden/cli"
exit 1
fi
# Configure server URL
bw config server "$VAULTWARDEN_URL" >/dev/null
# Login
echo "Logging in to Vaultwarden as $EMAIL..."
if [ -n "${BW_MASTER_PASSWORD:-}" ]; then
export BW_SESSION=$(bw login "$EMAIL" "$BW_MASTER_PASSWORD" --raw)
else
export BW_SESSION=$(bw login "$EMAIL" --raw)
fi
if [ -z "$BW_SESSION" ] || [ "$BW_SESSION" = "null" ]; then
echo "ERROR: Login failed. Check credentials."
exit 1
fi
echo "Login successful. Importing vault from $INPUT_FILE..."
# Import vault from JSON
bw import --format json --input "$INPUT_FILE" --session "$BW_SESSION"
# Lock the vault
bw lock --session "$BW_SESSION" >/dev/null
echo "Import complete!"
echo "Note: You may need to sync the vault in the web/browser extension."