GNU/Linux >> Belajar Linux >  >> Linux

Tambahkan baris ke file /etc/hosts dengan skrip Shell

Jika Anda di mac atau Anda memerlukan izin sudo untuk mencoba ini:

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

Itu masih akan meminta kata sandi Anda.

cara alternatif dari @kainjow

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

Pastikan untuk menggunakan -i pilihan 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

Jika tidak,

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

akan menambahkan baris di akhir file, yang dapat berfungsi seperti yang Anda harapkan.


Masukkan/Perbarui Entri

Jika Anda ingin menyisipkan/memperbarui entri host secara terprogram menggunakan bash, inilah skrip yang saya tulis untuk melakukannya:

#!/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

Skrip dimaksudkan untuk digunakan dengan OS X tetapi juga dapat digunakan di linux dengan penyesuaian kecil.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Script Shell Dengan Fungsi Dan Parameter Sebagai Variabel?

  3. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  1. Apakah mungkin membuat skrip bash shell berinteraksi dengan program baris perintah lain?

  2. Menambahkan pengguna ke sudoer melalui skrip shell

  3. skrip bash menambahkan teks ke baris pertama file

  1. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  2. Sortir dengan pemisah bidang

  3. Di file /etc/hosts/ saya di Linux/OSX, bagaimana cara melakukan subdomain wildcard?