2

I am trying to write a script that will enable xampp start and xampp stop with the same script without having to write in the terminal everytime.

To start xampp, I write in console :

sudo /opt/lampp/lampp start sudo /opt/lampp/lampp stop

How to make a script executable which allows xampp to start and stop simultaneously when double clicked ? Any idea is always welcomed.

Dan
  • 14,180
black
  • 556
  • 4
  • 15
  • 28

2 Answers2

4

You'll need to do 2 things to get what you want :

1) Create a simple bash script to start lampp

I've written it for you! It starts lampp if it isn't started and stops it if it's already started :

#!/bin/bash                                           ##This is a bash script

                                                      ##PREREQUISITES
if [[ ! -f /tmp/lampp-startstop ]] ; then             # if temp file doesn't exist
 echo 0 > /tmp/lampp-startstop 2>&1                   # create it and write 0 in it
fi

                                                      ##IF NOT RUNNING
if [ "`cat /tmp/lampp-startstop`" == "0" ] ; then     # if temp file contains 0
 sudo /opt/lampp/lampp start                          # start lampp
 echo 1 > /tmp/lampp-startstop 2>&1                   # write 1 in the temp file
 notify-send "Lampp" "Program started." -i xampp      # send a notification
 exit 0                                               # and exit
fi

                                                      ##IF RUNNING
if [ "`cat /tmp/lampp-startstop`" == "1" ] ; then     # if temp file contains 1
 sudo /opt/lampp/lampp stop                           # stop lampp
 echo 0 > /tmp/lampp-startstop 2>&1                   # write 0 in the temp file
 notify-send "Lampp" "Program stopped." -i xampp      # send a notification
 exit 0                                               # and exit
fi

2) Create a shortcut that will launch that script (on the Desktop for example) :

  • A) Create a .desktop file on the Desktop :

    gedit ~/Desktop/Lampp.desktop 
    
  • B) Enter the following in it :

    [Desktop Entry]
    Name=Lampp
    Comment=Start/Stop Lampp
    Exec=gksu bash /PATH/TO/THE/SCRIPT
    Icon=PATH/TO/THE/ICON
    Terminal=false
    Type=Application
    

    => Remplace the two /PATH/TO/THE/... by something. Icons are stored in /usr/share/icons/ and a good place for the script would be in your HOME folder, maybe hidden (hide by adding a . at the beginning of his name).

  • C) Make it executable :

    sudo chmod +x ~/Desktop/Lampp.desktop
    

Note : the script isn't really checking if lampp is working, it is using a temporary file (disapears at reboot) containing 1 if you have used the script once (meaning it's started) and 0 if you haven't used the script (meaning it isn't started). What does it mean ? That you have to only use this script if you want things to work : do not start lampp without this script and you'll be ok.

Note : you'll have to type your password in order to launch the shortcut. You could bypass that, but that wasn't your question so I will not explain that here.

MrVaykadji
  • 5,965
3

You can use a script like this,

#!/bin/bash
#checks if the process is already running or not
ps ax | grep "/opt/lampp/lamp[p]" > /dev/null
#if the process is running exit status $?=0 
if [ $? -eq 0 ]; then
#interactively states the running status of the process and asks permission to
#proceed in a zenity pop-up box
    zenity --question --text="Process is running. select \"yes\" to stop"
    if [ $? -eq 0 ]; then
#stop the running process on approval
    sudo /opt/lampp/lampp stop
    else
        exit 0
    fi
else
#interactively states the running status of the process and asks permission to
#proceed in a zenity pop-up box
    zenity --question --text="Process is not running. select \"yes\" to start"
    if [ $? -eq 0 ]; then
#starts the process on approval
        sudo /opt/lampp/lampp start
    else
        exit 0
    fi
fi

Save the script. Give it execution permission,

chmod +x <script_name>

It should give you Run option on double-clicking on it. If you wish you can make a .desktop file to run it.

Note: See this answer to run sudo /opt/lampp/lampp without password.

sourav c.
  • 46,120