GNU/Linux >> Znalost Linux >  >> Linux

Připojte řádek do souboru /etc/hosts pomocí skriptu shellu

Pokud používáte počítač Mac nebo k tomu potřebujete oprávnění sudo, zkuste toto:

sudo -- sh -c -e "echo '192.34.0.03   subdomain.domain.com' >> /etc/hosts";

Stále vás bude žádat o heslo.

alternativní způsob od @kainjow

echo '192.34.0.03 subdomain.domain.com' | sudo tee -a /etc/hosts

Ujistěte se, že používáte -i možnost sed .

-i[SUFFIX], --in-place[=SUFFIX]
  edit files in place (makes backup if extension supplied)

sed -i "2i192.241.xx.xx  venus.example.com venus" /etc/hosts

Jinak

echo "192.241.xx.xx  venus.example.com venus" >> /etc/hosts

by připojil řádek na konec souboru, což by mohlo fungovat, jak očekáváte.


Vložit/aktualizovat záznam

Pokud chcete programově vložit/aktualizovat položku hostitele pomocí bash, zde je skript, který jsem k tomu napsal:

#!/bin/bash

# insert/update hosts entry
ip_address="192.168.x.x"
host_name="my.hostname.example.com"
# find existing instances in the host file and save the line numbers
matches_in_hosts="$(grep -n $host_name /etc/hosts | cut -f1 -d:)"
host_entry="${ip_address} ${host_name}"

echo "Please enter your password if requested."

if [ ! -z "$matches_in_hosts" ]
then
    echo "Updating existing hosts entry."
    # iterate over the line numbers on which matches were found
    while read -r line_number; do
        # replace the text of each line with the desired host entry
        sudo sed -i '' "${line_number}s/.*/${host_entry} /" /etc/hosts
    done <<< "$matches_in_hosts"
else
    echo "Adding new hosts entry."
    echo "$host_entry" | sudo tee -a /etc/hosts > /dev/null
fi

Skript je určen pro použití s ​​OS X, ale s drobnými úpravami by fungoval i na linuxu.


Linux
  1. Vytvořit uživatelsky specifický soubor Hosts jako doplněk /etc/hosts?

  2. CentOS / RHEL :Jak obnovit ze smazaného souboru /etc/passwd

  3. Je možné, aby skript bash shell interagoval s jiným programem příkazového řádku?

  1. Přidávání uživatelů do sudoers pomocí skriptu shellu

  2. bash skript připojí text k prvnímu řádku souboru

  3. Jaký je limit velikosti /etc/hosts?

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Jak v mém souboru /etc/hosts/ v systému Linux/OSX vytvořím subdoménu se zástupnými znaky?

  3. Limit velikosti /etc/hosts (Linux)