Append line to /etc/hosts file with shell script

前端 未结 7 1740
春和景丽
春和景丽 2021-01-30 08:41

I have a new Ubuntu 12.04 VPS. I am trying to write a setup script that completes an entire LAMP installation. Where I am having trouble is appending a line to the /etc/ho

相关标签:
7条回答
  • 2021-01-30 08:58

    If your in mac or you need sudo permission to this try this:

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

    It will still ask you for password.

    alternative way from @kainjow

    echo '192.34.0.03 subdomain.domain.com' | sudo tee -a /etc/hosts
    
    0 讨论(0)
  • 2021-01-30 09:01
    echo "127.0.0.1 localhost `hostname`">./temp_hosts
    echo "192.241.xx.xx  venus.example.com">>./temp_hosts
    cat /etc/hosts |tail -n +2 >>./temp_hosts
    cat ./temp_hosts > /etc/hosts
    rm ./temp_file
    
    0 讨论(0)
  • 2021-01-30 09:04

    try this with root access.

     public void edithost() {
        sudo("echo " + "192.168.43.1     www.openrap.com openrap" + " >> /etc/hosts");
        sudo("echo " + "192.168.43.1  openrap.com openrap" + " >> /etc/hosts");
        sudo("echo " + "192.168.2.144  www.openrap.com openrap" + " >> /etc/hosts");
        sudo("echo " + "192.168.2.144  openrap.com openrap" + " >> /etc/hosts");
    }
    

    sudo for super user permission

    public static void sudo(String... strings) {
        try {
            Process su = Runtime.getRuntime().exec("su");
            DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
    
            for (String s : strings) {
                outputStream.writeBytes(s + "\n");
                outputStream.flush();
            }
    
            outputStream.writeBytes("exit\n");
            outputStream.flush();
            try {
                su.waitFor();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    this will append the lines to hosts in the android

    0 讨论(0)
  • 2021-01-30 09:05

    I should point out that sed (the stream editor) is not actually intended for editing files, although it can be used to do that. (Standard sed doesn't have a built-in mechanism for writing to other than standard output.) A more appropriate tool would be ed.

    The following ed script says "find the line containing the (admittedly sloppy) regular expression /127.0.0.1/ and append at the next line." (The lone period tells ed to stop appending.)

    ed /etc/hosts <<-'EOF'
        /127.0.0.1/a
        192.241.xx.xx  venus.example.com
        .
        wq
    EOF
    

    That said, you can really just append this line to the end of your /etc/hosts file very trivially:

    echo '192.241.xx.xx  venus.example.com' >> /etc/hosts
    
    0 讨论(0)
  • 2021-01-30 09:09

    Insert/Update Entry

    If you want to programmatically insert/update a hosts entry using bash, here's a script I wrote to do that:

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

    The script is intended for use with OS X but would work on linux as well with minor tweaking.

    0 讨论(0)
  • 2021-01-30 09:11

    you can use sed, like:

    sed '/Venus/ a\  
    192.241.xx.xx  venus.example.com venus' /etc/hosts
    
    0 讨论(0)
提交回复
热议问题