dtrfs/scripts/remote_create.sh

55 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# SPDX-License-Identifier: Unlicense
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )"
dir="/tmp/dtrfs"
if [ -z $1 ]; then
echo "You must specify the server as the first parameter."
echo "Example: ./install.sh 10.10.10.73 root 22"
echo "The 2nd (ssh user) and 3rd (ssh port) arguments are optional."
exit 1
fi
server="$1"
scp_server="$1"
echo $1 | grep -F ':' > /dev/null && scp_server="[${1}]"
if ! [ -z $2 ]; then
server="${2}@${server}"
echo $1 | grep -F ':' > /dev/null && scp_server="${2}@${scp_server}"
fi
if [ -z $3 ]; then
ssh="ssh"
scp="scp"
else
ssh="ssh -p $3"
scp="scp -P $3"
fi
set -e
# TODO: test if this works
mkdir -p tmp build
my_location="$(pwd)"
cd ../dtrfs_api && cargo build --release || {
echo Could not build dtrfs_api
exit 1
}
cd "$my_location"
cp ../dtrfs_api/target/release/dtrfs_api ./build/
tar cf tmp/dtrfs.tar *.sh build/dtrfs_api arch_guest_mods
$ssh $server rm -rf ${dir}
$ssh $server mkdir -p ${dir}
$scp tmp/dtrfs.tar ${scp_server}:${dir}
$ssh $server tar -xf ${dir}/dtrfs.tar -C ${dir}
$ssh $server GRAB_LOCAL_MODS=YES ${dir}/create.sh
archive=$($ssh $server cat ${dir}/build/.archive_name)
$scp ${scp_server}:${dir}/build/${archive} tmp/
echo
echo initrd downloaded to: $(pwd)/tmp/${archive}