vagrant-landrush / landrush

A Vagrant plugin that provides a simple DNS server for Vagrant guests
MIT License
666 stars 78 forks source link

sed command in RestartDnsmasq for redhat hosts does insert 127.0.0.1 before each nameserver entry #234

Closed hferentschik closed 8 years ago

hferentschik commented 8 years ago

The problem is the used sed expression:

      SED_COMMAND = <<-EOF.gsub(/^ +/, '')
      sudo sed -i.orig '/nameserver/i\\
      nameserver 127.0.0.1 # Added by landrush, a vagrant plugin

      ' /etc/resolv.conf
      EOF

It does a global search and replace. The line should only be inserted once at the top. Something like this should work and be simpler:

      SED_COMMAND = <<-EOF.gsub(/^ +/, '')
      sudo sed -i.orig '1 i\
      # Added by landrush, a vagrant plugin
      nameserver 127.0.0.1
      ' /etc/resolv.conf
      EOF
praveenkumar commented 8 years ago

Something like this should work and be simpler:

That expression gave below error

sed: -e expression #1, char 56: extra characters after command

What works is below expression. (Also tested.)

SED_COMMAND = <<-EOF.gsub(/^ +/, '') 
sudo sed -i.orig '1 i\
nameserver 127.0.0.1 # Added by landrush, a vagrant plugin
' /etc/resolv.conf
hferentschik commented 8 years ago

@praveenkumar Can you try:

      SED_COMMAND = <<-EOF.gsub(/^ +/, '')
      sudo sed -i.orig '1 i\
      # Added by landrush, a vagrant plugin \
      nameserver 127.0.0.1 \
      ' /etc/resolv.conf
      EOF
praveenkumar commented 8 years ago

@praveenkumar Can you try:

This will give below result which not what we want.

# Added by landrush, a vagrant plugin           nameserver 127.0.0.1
hferentschik commented 8 years ago

Needs to be \

Can you try:

      SED_COMMAND = <<-EOF.gsub(/^ +/, '')
      sudo sed -i.orig '1 i\
      # Added by landrush, a vagrant plugin \\
      nameserver 127.0.0.1 \\
      ' /etc/resolv.conf
      EOF
hferentschik commented 8 years ago

fixed by pull request #235