40 lines
979 B
Bash
40 lines
979 B
Bash
set -o errexit
|
|
set -o pipefail
|
|
|
|
sshoptions="-o StrictHostKeyChecking=no -o ServerAliveInterval=1 -o ServerAliveCountMax=1 -p 222 -T"
|
|
HOSTNAME=$1
|
|
|
|
if [ ! -e flake.nix ]
|
|
then
|
|
echo "flake.nix not found. Searching down."
|
|
while [ ! -e flake.nix ]
|
|
do
|
|
if [ $PWD = "/" ]
|
|
then
|
|
echo "Found root. Aborting."
|
|
exit 1
|
|
else
|
|
cd ..
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo
|
|
if [ $# = 1 ]
|
|
then
|
|
diskkey=$(sops -d machines/$HOSTNAME/disk.key)
|
|
echo "$diskkey" | ssh $sshoptions root@$HOSTNAME-initrd "systemd-tty-ask-password-agent" #root
|
|
|
|
elif [ $# = 2 ]
|
|
then
|
|
diskkey=$(sops -d machines/$HOSTNAME/disk.key)
|
|
IP=$2
|
|
echo "$diskkey" | ssh $sshoptions root@$IP "systemd-tty-ask-password-agent" #root
|
|
|
|
else
|
|
echo
|
|
echo "Unlock the root disk on a remote host."
|
|
echo "Usage: $0 <hostname> [ip]"
|
|
echo "If an IP is not provided, the hostname will be used as the IP address."
|
|
exit 1
|
|
fi |