Search code examples
linuxbashshsynology

check IPs if they exist in /etc/hosts


I am trying to create a .sh script that checks if some IP/Domain like "teamspeak.com" exists in /etc/hosts and if it does not then I want to add something to the hosts file.

Right now I am trying this with:

if ! grep -q "teamspeak.com == teamspeak.com" /etc/hosts; then
    echo "Exists"
else
    echo "Add to etc host ting here" >> /etc/hosts;

fi

Solution

  • grep -q 
    

    exits with 0 if any match is found, otherwise it exits with 1 so you need to remove ! and == comparison:

    if grep -q "teamspeak.com" /etc/hosts; then
        echo "Exists"
    else
        echo "Add to etc host ting here" >> /etc/hosts;
    fi
    

    Note that it is not word based search so it finds myteamspeak.com or teamspeak.com.us too. To get the whole host name you need to use cut command with delimiters.

    To add a new host use:

    echo "127.0.0.1 teamspeak.com" >> /etc/hosts