Skip to main content
Loading...

More Shell Posts

#!/bin/bash

#makefileMaker.sh by Leif Messinger

#Needs getDependencies.sh

CC="gcc"

#I have no idea why it's called CXX when it's a c++ compiler

#I know that cpp is c pre processor, but still, why X?
CXX="g++"

CXXFLAGS="-std=c++17 -O2"

#CFLAGS="-std=c17"
LIBRARIES="$@"

#Vulkan Flags for me

#LIBRARIES="-lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi"

function compileAllFiles(){

	#output: bruh.o yeet.o

	#	CXX $CXXFLAGS bruh.o yeet.o -o output $LIBRARIES
	echo -n "output:"
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n " ${f%.cpp}.o"
		done
	fi
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n " ${f%.c}.o"
		done
	fi
	echo ""

	if compgen -G "*.cpp" &> /dev/null; then
		echo -e -n "\t$CXX $CXXFLAGS "
	else
		echo -e -n "\t$CC $CFLAGS "
	fi
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n " ${f%.cpp}.o"
		done
	fi
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n " ${f%.c}.o"
		done
	fi
	echo " -o output $LIBRARIES"
	echo ""
}

function compileAllObjectFiles(){

	#bruh.o: bruh.cpp yeet.h

	#	CXX $CXXFLAGS -c bruh.cpp $LIBRARIES
	if compgen -G "*.cpp" &> /dev/null; then
		for f in *.cpp; do
			echo -n "${f%.cpp}.o: $f"
			getDependencies.sh < $f
			echo ""

			echo -e "\t$CXX $CXXFLAGS -c $f"
			echo ""
		done
	fi

	#yeet.o: yeet.c

	#	CC $CFLAGS -c yeet.c $LIBRARIES
	if compgen -G "*.c" &> /dev/null; then
		for f in *.c; do
			echo -n "${f%.c}.o: $f"
			getDependencies.sh < $f
			echo ""

			echo -e "\t$CC $CFLAGS -c $f"
			echo ""
		done
	fi
}

compileAllFiles

compileAllObjectFiles


#does not work on windows
echo "clean:"
echo -e "\trm -f -v *.o output"
echo ""

echo "run:"
echo -e "\t./output"
echo ""

echo "debug:"
if compgen -G "*.cpp" &> /dev/null; then
	echo -e -n "\t$CXX $CXXFLAGS -g "
else
	echo -e -n "\t$CC $CFLAGS -g "
fi
if compgen -G "*.cpp" &> /dev/null; then
	for f in *.cpp; do
		echo -n " ${f}"
	done
fi
if compgen -G "*.c" &> /dev/null; then
	for f in *.c; do
		echo -n " ${f}"
	done
fi
echo " $LIBRARIES -o output"
echo ""
#!/bin/bash

#Originally made by Isaac Cook https://gist.github.com/icook/5400173

#Modified by Leif Messinger

#upload_key.sh [server_ip [server2_ip [...]]]

#To be run locally on a linux computer

if [ -e ~/.ssh/id_rsa.pub ];
then
    echo "SSH Key already exists on local machine"
else
    echo "Generating SSH key on local machine"
    ssh-keygen -t rsa   #generates id_rsa and id_rsa.pub
    chmod -R 700 ~/.ssh #Sets permissions of ssh folder
    ssh-add     #Adds keys (and passwords?) to ssh_agent. (hopefully doesn't require password)
fi

echo "Loading client public key into memory"
pubKey=$(<~/.ssh/id_rsa.pub)

for server
do
    echo "Adding client public key to $server remote server authorized keys"
    #Idiot Isaac Cook didn't know about ssh-copy-id
    #ssh-copy-id even checks if your key already exists
    #In fairness, I didn't either until researching ssh-add
    ssh-copy-id -i ~/.ssh/id_rsa.pub $server        #In theory, this should prompt for a username

    #ssh $server "mkdir -p ~/.ssh;  #Make the folder if not already made
    #       echo \"$pubKey\" >> ~/.ssh/authorized_keys;     #Append your public key to the server's authorized_keys
    #       chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"   #Set the correct permissions of those files

    #echo "Adding server public key to local authorized keys"
    #ssh $server "ssh-copy-id -i ~/.ssh/id_rsa.pub \$SSH_CLIENT" #this might need some awk, as $SSH_CLIENT spits out clientip portnumber

    echo "Displaying server public key"
    ssh $server "cat ~/.ssh/id_rsa.pub"

    #Though, he did give me a good idea
    echo "Displaying keys authorized on $server (you can paste them in your authorized_keys file)"
    ssh $server "cat ~/.ssh/authorized_keys"

    #echo "Appending keys authorized on $server to your local authorized_keys"
    #ssh $server "cat ~/.ssh/authorized_keys" >> ~/.ssh/authorized_keys
done
echo "SSH keys schronized successfully!"