63 lines
1.7 KiB
Bash
Executable file
63 lines
1.7 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
## Init macOS env
|
|
|
|
# Update PATH
|
|
for p in /usr/local/{,opt/{e2fsprogs,ruby,util-linux}/}{bin,sbin}; do
|
|
PATH="${p}:${PATH}"
|
|
done
|
|
|
|
# Create and mount RAMDisk
|
|
if ! [[ -d /Volumes/RAM_Disk ]]; then
|
|
echo "Creating RAM Disk..."
|
|
RAM_DEV="$(hdiutil attach -nomount ram://524288)"
|
|
diskutil quiet erasevolume HFS+ RAM_Disk ${RAM_DEV}
|
|
diskutil quiet unmount ${RAM_DEV}
|
|
mkdir /Volumes/RAM_Disk
|
|
mount -t hfs -o owners ${RAM_DEV} /Volumes/RAM_Disk
|
|
fi
|
|
cd /Volumes/RAM_Disk
|
|
|
|
# Connect to WiFi?
|
|
if ! [[ -e /Volumes/RAM_Disk/.wifi ]]; then
|
|
WIFI_NET="$(fgrep ':::' /.known_networks | head -1)"
|
|
if ! ifconfig | grep -Eq '(((10|172)\.\d+|192.168)\.\d+\.\d+)' 2>/dev/null; then
|
|
echo "Connecting to WiFi..."
|
|
NET_DEV="$(/usr/sbin/networksetup \
|
|
-listallhardwareports \
|
|
| tr -d '\n' \
|
|
| grep -Eo 'Wi-Fi.*?Device.*?(en\d+)' \
|
|
| grep -Eo 'en(\d+)')"
|
|
networksetup -setairportnetwork "${NET_DEV}" "${WIFI_NET%%:::*}" "${WIFI_NET##*:::}"
|
|
touch /Volumes/RAM_Disk/.wifi
|
|
sleep 5s
|
|
fi
|
|
fi
|
|
|
|
# Dropbear (SSH)
|
|
if ! [[ -d /Volumes/RAM_Disk/.ssh ]]; then
|
|
echo "Starting SSH server..."
|
|
mkdir /Volumes/RAM_Disk/.ssh
|
|
cp /.authorized_keys /Volumes/RAM_Disk/.ssh/authorized_keys
|
|
chown -R 0:0 /Volumes/RAM_Disk/.ssh
|
|
chmod 700 /Volumes/RAM_Disk/.ssh
|
|
chmod 600 /Volumes/RAM_Disk/.ssh/authorized_keys
|
|
dropbear -s
|
|
fi
|
|
|
|
# Stay awake
|
|
echo "Getting caffeinated..."
|
|
caffeinate -id &
|
|
|
|
# Set time
|
|
if ! [[ -e /Volumes/RAM_Disk/.time_set ]]; then
|
|
echo "Updating clock..."
|
|
if ! sntp -Ss us.pool.ntp.org >/dev/null 2>&1; then
|
|
# Assuming we're running under an older version of macOS
|
|
sntp -s us.pool.ntp.org >/dev/null 2>&1
|
|
fi
|
|
touch /Volumes/RAM_Disk/.time_set
|
|
fi
|
|
|
|
# Run cmd
|
|
"$1"
|