64 lines
1.7 KiB
Bash
Executable File
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."
|