diff --git a/addnew_printer.sh b/addnew_printer.sh index 9d70e56..73a003c 100755 --- a/addnew_printer.sh +++ b/addnew_printer.sh @@ -4,6 +4,12 @@ if (( $EUID != 0 )); then echo "Please run as root" exit fi + +if [ $SUDO_USER ]; then user=$SUDO_USER; fi + +#clear out journalctl - probably a better way to do this +sudo journalctl --vacuum-time=1seconds + echo "UNPLUG PRINTER FROM USB" echo "Enter the name for new printer/instance:" read INSTANCE @@ -22,7 +28,7 @@ read PORT if [ -z "$PORT" ]; then PORT=$(tail -1 /etc/octoprint_ports) - if [ -z "$PORT"]; then + if [ -z "$PORT" ]; then PORT=4999 fi @@ -30,29 +36,31 @@ if [ -z "$PORT" ]; then echo Selected port is: $PORT fi -if grep -q $PORT /etc/octoprint_ports; then - echo "Port in use! Check /etc/octoprint_ports. Exiting." - exit 1 +if [ -f /etc/octoprint_ports ]; then + if grep -q $PORT /etc/octoprint_ports; then + echo "Port in use! Check /etc/octoprint_ports. Exiting." + exit 1 + fi fi #TODO #collect user, basedir path, daemon path -echo "Octoprint Daemon User [$USER]:" +echo "Octoprint Daemon User [$user]:" read OCTOUSER if [ -z "$OCTOUSER" ]; then - OCTOUSER=$USER + OCTOUSER=$user fi -echo "Octoprint Daemon Path [/home/$USER/OctoPrint/venv/bin/octoprint]:" +echo "Octoprint Daemon Path [/home/$user/OctoPrint/venv/bin/octoprint]:" read OCTOPATH if [ -z "$OCTOPATH" ]; then - OCTOPATH="/home/$USER/OctoPrint/venv/bin/octoprint" + OCTOPATH="/home/$user/OctoPrint/venv/bin/octoprint" fi -echo "Octoprint Config Path [/home/$USER/]:" +echo "Octoprint Config Path [/home/$user/]:" read OCTOCONFIG if [ -z "$OCTOCONFIG" ]; then - OCTOCONFIG="/home/$USER/" + OCTOCONFIG="/home/$user/" fi read -p "Auto-detect printer serial number for udev entry?" -n 1 -r @@ -80,20 +88,21 @@ else fi #octoprint_base is the generic .octoprint folder that contains all configuration, upload, etc. -echo "Octoprint instance base folder [/home/$USER/.octoprint]:" +echo "Octoprint instance base folder [/home/$user/.octoprint]:" read BFOLD if [ -z "$BFOLD" ]; then - BFOLD="/home/$USER/.octoprint" + BFOLD="/home/$user/.octoprint" fi read -p "Do you want to proceed? " -n 1 -r echo # (optional) move to a new line -if [[ $REPLY =~ ^[Yy]$ ]] +if [[ $REPLY =~ ^[Yy]$ ]]; then - cat octoprint_default | sed -e "s/OCTOUSER/$OCTOUSER" -e "s/OCTOPATH/$OCTOPATH" -e "s/OCTOCONFIG/$OCTOCONFIG" -e "s/NEWINSTANCE/$INSTANCE/" -e "s/NEWPORT/$PORT/" > /etc/default/$INSTANCE + cat octoprint_default | sed -e "s/OCTOUSER/$OCTOUSER/" -e "s#OCTOPATH#$OCTOPATH#" -e "s#OCTOCONFIG#$OCTOCONFIG#" -e "s/NEWINSTANCE/$INSTANCE/" -e "s/NEWPORT/$PORT/" > /etc/default/$INSTANCE cat octoprint_init | sed -e "s/NEWINSTANCE/$INSTANCE/" > /etc/init.d/$INSTANCE - cat octoprint_udev | sed -e "s/NEWINSTANCE/$INSTANCE/" -e "s/UDEV/$UDEV/" >> /etc/udev/rules.d/99-octoprint.rules - + cat octoprint_udev | sed -e "s/NEWINSTANCE/octo_$INSTANCE/" -e "s/UDEV/$UDEV/" >> /etc/udev/rules.d/99-octoprint.rules + #clear out journalctl - probably a better way to do this + sudo journalctl --vacuum-time=1seconds #Open port to be on safe side ufw allow $PORT/tcp @@ -102,11 +111,11 @@ then #Append our port in the port list echo $PORT >> /etc/octoprint_ports #copy all files to our new directory - cp -rp $BFOLD .$INSTANCE + cp -rp $BFOLD $OCTOCONFIG/.$INSTANCE #Do config.yaml modifications here if needed.. #sed -i "/s/PORT/$INSTANCE/" .$INSTANCE/config.yaml #TODO - Just add an entry after additionalPorts? - cat $BFOLD/config.yaml | sed -e "s/INSTANCE/$INSTANCE/" > .$INSTANCE/config.yaml + #cat $BFOLD/config.yaml | sed -e "s/INSTANCE/$INSTANCE/" > .$INSTANCE/config.yaml udevadm control --reload-rules udevadm trigger systemctl daemon-reload