Category: Linux

You got to love Linux. Not only that it is free, but it is also very strong, stable, and widely used.

  • X11VNC

    This is a good startup command switches for x11vnc. I still need to figure out the sharing of clipboard.

    # Create a password file
    x11vnc -storepasswd
    
    # Startup X11VNC with swithes
    x11vnc -forever -noxdamage -bg -geometry 1600x900 -o "/home/[USER]/.x11vnc.log.deba55:5900" -rfbauth /home/[USER]/.vnc/passwd
  • List open or listening ports

    MacOS

    lsof -nP -i4TCP

    RedHat/Centos7

    netstat -tulpn

  • CentOS 6 repo Settings

    To fix repo settings in CentOS 6

    1. make sure there is no proxy or funny settings in
    vi /etc/yum.conf

    2. There are a couple of files within /etc/yum.repos.d/. Make sure the url are correct (accessible) and enabled=1
    ll /etc/yum.repos.d/

    3. Cleanup the repo, list and retest
    yum –enablerepo=base clean metadata;
    yum repolist all
    yum search java-1.8.0-openjdk

  • Show Linux Partition Tree Mountpoint and If SSD


    lsblk -o TYPE,NAME,KNAME,UUID,MOUNTPOINT,SIZE,ROTA

  • SELinux directory permission

    To check SELinux directory permission you need to -z for example

    ls -Z /var/www/html

    If something is incorrect you can re-adjust some of the directory permission:


    chcon -R -t httpd_sys_content_t /var/www/html

  • RedHat / Centos Firewall

    To add an exception to firewall
    In RedHat/CentOS 6

    iptables --line -vnL
    iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -p tcp -s 192.168.0.0/16 -j ACCEPT
    iptables -D INPUT -p tcp -s 192.168.0.0/16 -j ACCEPT
    service iptables save

    In RedHat/CentOS 7

    firewall-cmd --list-all
    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --zone=public --add-source=192.168.0.0/16
    firewall-cmd --permanent --zone=public --remove-source=192.168.0.0/16
    firewall-cmd --reload
    systemctl disable firewalld

  • Bash string comparison


    #!/bin/bash

    function test(){
    echo ""
    echo "TEST $1"
    echo "VAR_1: $VAR_1 VAR_2: $VAR_2 "
    if [ "$VAR_1" = "false" ]; then echo " VAR_1 is false"; fi
    if [ "$VAR_2" = "false" ]; then echo " VAR_2 is false"; fi
    if [ "$VAR_1" = "false" ] || [ "$VAR_2" = "false" ]; then echo " At least one is false"; fi
    }
    VAR_1='true';
    VAR_2='true';
    test 1

    VAR_1='true';
    VAR_2='false';
    test 2

    VAR_1='false';
    VAR_2='false';
    test 3

    function test2(){
    echo ""
    echo "TEST $1"
    echo "VAR_3: $VAR_3 VAR_4: $VAR_4 "
    [ -n "$VAR_3" ] && echo " VAR_3 is not null"
    [ -z "$VAR_3" ] && echo " VAR_3 is null"
    [ -n "$VAR_4" ] && echo " VAR_4 is not null"
    [ -z "$VAR_4" ] && echo " VAR_4 is null"
    }

    VAR_3=""
    VAR_4=""
    test2 4

    VAR_3="3"
    VAR_4=""
    test2 5

    Result

    $ /c/tmp/bashtest.sh

    TEST 1
    VAR_1: true VAR_2: true

    TEST 2
    VAR_1: true VAR_2: false
    VAR_2 is false
    At least one is false

    TEST 3
    VAR_1: false VAR_2: false
    VAR_1 is false
    VAR_2 is false
    At least one is false

    TEST 4
    VAR_3: VAR_4:
    VAR_3 is null
    VAR_4 is null

    TEST 5
    VAR_3: 3 VAR_4:
    VAR_3 is not null
    VAR_4 is null

  • Crontab header


    # minute (0-59),
    # | hour (0-23),
    # | | day of the month (1-31),
    # | | | month of the year (1-12),
    # | | | | day of the week (0=Sunday 1=Monday 2=Tuesday 3=Wednesday 4=Thursday 5=Friday 6=Saturday).
    # | | | | | commands

  • Simple unit test is bash file

    Consider the following 3 files:

    1. shellTestFramework.sh


    #!/bin/bash
    # Copyright (c) Ronald Pringadi

    # Before each Test
    function setUpTest(){
    #"Please overwrite this function on your unit test. Something that need to be done before each test"
    return 0;
    }

    function tearDownTest(){
    #"Please overwrite this function on your unit test. Something that need to be done after each test"
    return 0;
    }

    # Helping assertion
    function assertEqual(){
    if [ "$1" == "$2" ]; then
    echo "`caller 0`. PASS"
    else
    echo "`caller 0`. FAIL. $1!=$2"
    fi
    }

    # Helping assertion
    function assertNotEqual(){
    if [ "$1" != "$2" ]; then
    echo "`caller 0`. PASS"
    else
    echo "`caller 0`. FAIL. $1==$2"
    fi
    }

    # To run all test.
    # Will run 'setUpTest()' before each test.
    # Will run 'tearDownTest()' after each test.
    function runAllTest(){
    array=($(compgen -A function |grep -i test))
    for i in "${array[@]}"
    do
    if [ "$i" != "setUpTest" ] && [ "$i" != "runAllTest" ] && [ "$i" != "tearDownTest" ]; then
    echo "`setUpTest`"
    echo "`$i`"
    echo "`tearDownTest`"
    fi
    done
    }

    2. osdetector.sh


    #!/bin/bash
    # Copyright (c) Ronald Pringadi

    # Returns String ("ubuntu", "censtos", "redhat", "unknown")
    function detectAnyOS(){
    OS="unknown"

    DETECT="ubuntu"
    if [ `detectSpecificOS "$DETECT"` -eq 1 ] ; then
    echo $DETECT
    return 0
    fi

    DETECT="centos"
    if [ `detectSpecificOS "$DETECT"` -eq 1 ] ; then
    echo $DETECT
    return 0
    fi

    DETECT="Red Hat"
    if [ `detectSpecificOS "$DETECT"` -eq 1 ] ; then
    echo "redhat"
    return 0
    fi

    DETECT="RHEL"
    if [ `detectSpecificOS "$DETECT"` -eq 1 ] ; then
    echo "redhat"
    return 0
    fi
    }

    # Input String ("ubuntu", "Centos", "RedHat")
    # Returns String "1"=found, "0"=not found
    function detectSpecificOS(){
    DETECT=$1
    IS_FOUND=`cat /etc/*-release |grep -i "$DETECT"|wc -l`
    if [ $IS_FOUND -gt 0 ]; then
    echo "1"
    else
    echo "0"
    fi
    }

    # Returns String ("6", "5.5", "4")
    function detectOSVersion(){
    # Works for ubuntu
    VERSION=`cat /etc/*-release |grep 'DISTRIB_RELEASE='|grep -o '[0-9|.]\+'|head -1`
    if [ "$VERSION" != "" ]; then
    echo $VERSION
    return 0
    fi

    # Works for Centos
    VERSION=`cat /etc/*-release |grep ' release '|grep -o '[0-9|.]\+'|head -1`
    if [ "$VERSION" != "" ]; then
    echo $VERSION
    return 0
    fi

    # Final resort
    VERSION=`cat /etc/*-release |grep -i 'ubuntu\|red hat\|centos'| grep -o '\ [0-9|.]\+'|head -1`
    if [ "$VERSION" != "" ]; then
    echo $VERSION
    return 0
    fi

    }

    # Returns String ("6", "5", "4")
    function detectOSMajorVersion(){
    VERSION=`detectOSVersion`
    MAJOR_VERSION=`echo "$VERSION" |grep -o '[0-9]\+'|head -1`
    echo "$MAJOR_VERSION"
    }

    # Input String OS ("ubuntu", "Centos", "RedHat")
    # Input String OSVersion name
    # Returns String "1"=supported, "0"=not supported
    function isOSSupported(){
    SUPPORTED="0"
    OS=`echo "$1"| tr '[:upper:]' '[:lower:]'`
    VERSION="$2"
    MAJOR_VERSION=`echo "$VERSION" |grep -o '[0-9]\+'|head -1`
    if [ "$OS" == "ubuntu" ]; then
    if [ "$MAJOR_VERSION" == "12" ] || [ "$MAJOR_VERSION" == "13" ] || [ "$MAJOR_VERSION" == "14" ]; then
    SUPPORTED="1"
    fi
    fi
    if [ "$OS" == "red hat" ] || [ "$OS" == "redhat" ] || [ "$OS" == "centos" ]; then
    if [ "$MAJOR_VERSION" == "6" ]; then
    SUPPORTED="1"
    fi
    fi
    echo $SUPPORTED
    }

    3. osdetector.test.sh


    #!/bin/bash
    # Copyright (c) Ronald Pringadi
    my_dir="$(dirname "$0")"
    source "$my_dir/osdetector.sh"
    source "$my_dir/shellTestFramework.sh"

    # Before each Test
    function setupTest(){
    RELEASE_CONTENT="Ubuntu 14.04.3 LTS"
    echo "$RELEASE_CONTENT">/etc/test-release
    }

    function adetectSpecificOSTest(){
    DETECT="Ubuntu"
    RESULT=`detectSpecificOS $DETECT`
    assertEqual "$RESULT" "1"

    DETECT="Centos"
    RESULT=`detectSpecificOS $DETECT`
    assertEqual "$RESULT" "0"
    }

    function detectAnyOSTest(){
    RESULT=`detectAnyOS`
    assertEqual "$RESULT" "ubuntu"
    assertNotEqual "$RESULT" "centos"
    }

    function detectOSAndOsVersionTest(){
    RELEASE_CONTENT="Ubuntu 14.04.3 LTS"
    echo "$RELEASE_CONTENT" > /etc/test-release
    RESULT=`detectOSVersion`
    assertEqual "$RESULT" "14.04.3"
    RESULT=`detectOSMajorVersion`
    assertEqual "$RESULT" "14"
    RESULT=`detectAnyOS`
    assertEqual "$RESULT" "ubuntu"

    RELEASE_CONTENT="CentOS release 6.6 (Final)"
    echo "$RELEASE_CONTENT" > /etc/test-release
    RESULT=`detectOSVersion`
    assertEqual "$RESULT" "6.6"
    RESULT=`detectOSMajorVersion`
    assertEqual "$RESULT" "6"
    RESULT=`detectAnyOS`
    assertEqual "$RESULT" "centos"

    RELEASE_CONTENT="CentOS Linux release 7.1.1503 (Core)"
    echo "$RELEASE_CONTENT" > /etc/test-release
    RESULT=`detectOSVersion`
    assertEqual "$RESULT" "7.1.1503"
    RESULT=`detectOSMajorVersion`
    assertEqual "$RESULT" "7"
    RESULT=`detectAnyOS`
    assertEqual "$RESULT" "centos"

    RELEASE_CONTENT="Red Hat Enterprise Linux Server release 6.3 (Santiago)"
    echo "$RELEASE_CONTENT" > /etc/test-release
    echo "$RELEASE_CONTENT" >> /etc/test-release
    RESULT=`detectOSVersion`
    assertEqual "$RESULT" "6.3"
    RESULT=`detectOSMajorVersion`
    assertEqual "$RESULT" "6"
    RESULT=`detectAnyOS`
    assertEqual "$RESULT" "redhat"
    }

    function isOSSupportedTest(){

    RESULT=`isOSSupported "ubuntu" "11"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "ubuntu" "12"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "ubuntu" "13"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "ubuntu" "14"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "ubuntu" "15"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "redhat" "5"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "redhat" "6"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "redhat" "7"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "red hat" "5"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "red hat" "6"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "red hat" "7"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "centos" "5"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "centos" "6"`
    assertEqual "$RESULT" "1"

    RESULT=`isOSSupported "centos" "7"`
    assertEqual "$RESULT" "0"

    RESULT=`isOSSupported "Fedora" "50"`
    assertEqual "$RESULT" "0"

    }

    runAllTest

  • Linux find files and total their size


    find ./ -type f -newerct "1 May 2015" ! -newerct "1 Jul 2015" -print0 | du --files0-from=- -hc| tail -n1