Search code examples
linuxbashshellunix

How to use init-functions?


Every Operating System has Librarys. Most of them gives you the opportunity to do more ore to write less code. inti-functions is one of these Librarys but...

What is init-functions and how to use it?


Solution

  • In Linux you are able to use init-functions to manage deamons and protocol in a colored & uniform way. This is way easier to handle than recolor every answer.

    It is stored in /lib/lsb/ under the name init-functions.

    Here you have an Example:

    #!/bin/bash
    source /lib/lsb/init-functions                  # Importing init-functions - log messages
                                    # Use for importing other scripts ore else: "source" / "."
                                    # Use at the beginning of the path "/" to say that the path has to start from the root directory
    
    log_success_msg "Starting test.sh" || true
    echo
    log_action_msg "Info message" || true               # Info message
    log_success_msg "Checking Files" || true            # Success message
    log_warning_msg "Free storage is under 10%" || true         # Warning message
    log_failure_msg "Starting unknown script files" || false    # Failure message
    
    echo
    log_end_msg 0 || true                       # End message - success - resetting the line above -> log_daemon_msg
    log_end_msg 1 || true                       # End message - failure - resetting the line above -> log_daemon_msg
    log_end_msg 255 || true                     # End message - warning - resetting the line above -> log_daemon_msg
    echo
    log_progress_msg "copying file 2123"                # One of the line resetting comands - progress
    echo
    echo
    
    log_daemon_msg "Integrate files" || true
    sleep 2
    log_end_msg 0 || true
    
    log_daemon_msg "Checkt if the directory 4234 exist" || true
    sleep 2
    log_end_msg 1 || true
    
    log_daemon_msg "Storage space checking " || true
    sleep 2
    log_end_msg 255 || true
    echo
    echo
    log_daemon_msg "Checking Filestorage" || true
    sleep 1
    log_progress_msg "Checking File 1"  || true
    sleep 1
    log_progress_msg "Checking File 2" || true
    sleep 1
    log_progress_msg "Checking File 3"  || true
    sleep 1
    log_progress_msg "Checking File 4"  || true
    sleep 1
    log_end_msg 0 || true
    
    echo
    
    #---------------------------------------------------------------# Method 1 - not working for commands that are self responding
    
    $checker                            # A variable that doesn't exist. To trigger an error code
    log_daemon_msg "Check if the last command was an Error" || true
    if [ "$?" -eq "0" ]                         # "$?" is the errorcode number of the last command. | 0 = There was no Errors | 1 = Error code 1
    then
        log_end_msg 0 || true
    else
        log_end_msg 1 || true
        echo "       There went something wrong. see log"
    fi
    
    #---------------------------------------------------------------# A way to check if a directory exist
    
    #if [ -d "/opt/scripts"  ]                  # Check if directory exist - example at this line: if directory /opt/scripts exist
                                    # -d = check if the following directory exitst
                                    # -a = check if the following file exsist
    #if [ ! -d "/opt/scripts" ]                 # ! is a negativ operator - example at this line: if directory /opt/scripts NOT exist
                                    # You can actually use the ! operator anywhere
    
    #---------------------------------------------------------------# Method 2 - working for self responding commands. but the log_daemon_msg ist not working so we take log_succes/warning/failure_msg
    
    echo
    echo "type in: false / true / (nothing)"
    read var1 
    case $var1 in                           # Check if variable var1 is true
        true)
            log_success_msg "Check if var1 is true" || true
            ;;
    
        false)
                    log_warning_msg "Check if var1 is true" || true
                    echo -e "       \e[33mvar1 is false.\e[0m"
                    ;;
    
        *)
                log_failure_msg "Check if var1 is true" || true
                echo -e "       \e[31mthere was no input in the read statment.\e[0m"
            ;;
    esac