Kali Linux Penetration Testing Bible. Gus Khawaja
Чтение книги онлайн.

Читать онлайн книгу Kali Linux Penetration Testing Bible - Gus Khawaja страница 25

СКАЧАТЬ

      To execute it, we just enter the script name (we don't need to supply any parameters like we did before). Once we enter the script's name, we will be prompted with the messages defined in the previous script:

      root@kali:~# nameprint.sh Please enter your first name:Gus Please enter your last name:Khawaja Your full name is: Gus Khawaja

      Functions are a way to organize your Bash script into logical sections instead of having an unorganized structure (programmers call it spaghetti code). Let's take the earlier calculator program and reorganize it (refactor it) to make it look better.

       In the first section, we create all the global variables. Global variables are accessible inside any function you create. For example, we are able to use all the NUM variables declared in the example inside the add function.

       Next, we build the functions by dividing our applications into logical sections. The print_custom() function will just print any text that we give it. We're using the $1 to access the parameter value passed to this function (which is the string CALCULATOR ).

       Finally, we call each function sequentially (each one by its name). Print the header, add the numbers, and, finally, print the results.

Snapshot of Script Sections.

Snapshot of Conditions & Loops.

      Conditions

      An if statement takes the following pattern:

      if [[ comparison ]] then True, do something else False, Do something else fi

      If you've been paying attention, you know that the best way to explain this pattern is through examples. Let's develop a program that pings a host using Nmap, and we'll display the state of the machine depending on the condition (the host is up or down):

      #!/bin/bash #Ping a host using Nmap ### Global Variables ### #Store IP address IP_ADDRESS=$1 function ping_host(){ ping_cmd=$(nmap -sn $IP_ADDRESS | grep 'Host is up' | cut -d '(' -f 1) } function print_status(){ if [[ -z $ping_cmd ]] then echo 'Host is down' else echo 'Host is up' fi } ping_host print_status

      root@kali:~# simpleping.sh 10.0.0.11 Host is down root@kali:~# simpleping.sh 10.0.0.1 Host is up

Equal [[ x ‐eq y ]]
Not equal [[ x ‐ne y ]]
Less than [[ x ‐lt y ]]
Greater than [[ x ‐gt y ]]
Equal [[ str1 == str2 ]]
Not equal [[ str1 != str2 ]]
Empty string [[ ‐z str ]]
Not empty string [[ ‐n str ]]
File exists? [[ ‐a filename ]]
Directory exists? [[ ‐d directoryname ]]
Readable file? [[ ‐r filename ]]
Writable file? [[ ‐w filename ]]
Executable file? [[ ‐x filename ]]
File not empty? [[ ‐s filename ]]

      Loops

      You can write loops in two different ways: using a while loop or using a for loop. Most of the programming languages use the same pattern for loops. So, if you understand how loops work in Bash, the same concept will apply for Python, for example.

      Let's start with a while loop that takes the following structure:

      while [[ condition ]] do do something done

      The best way to explain a loop is through a counter from 1 to 10. We'll develop a program that displays a progress bar:

      #!/bin/bash #Progress bar with a while loop #Counter COUNTER=1 #Bar BAR='##########' while [[ $COUNTER СКАЧАТЬ