Skip to content Skip to sidebar Skip to footer

How To Edit Hostname File Using Fabric

I have change my hosts file,so how to change hostname.my system is ubuntu. eg my hosts file: 192.168.0.100 host1.mydomain.com 192.168.0.101 host2.mydomain.com I wanna the hostname

Solution 1:

Fabric is just a SSH wrapper, so what you're looking at is LINUX specific, not frabric or python specific.

from fabric.api import run
run('hostname your-new-name')
run('echo your-new-hostname > /etc/hostname')

And just do a run(..edit..) according to your linux dist?

Or just do:

from subprocess import Popen, PIPE
hosts = open('/etc/networking/hosts', 'rb')
for hostline in hosts.readlines():
    ip, name = hostline.split(' ')
    command = ['ssh', '-t', 'root@' + host.strip('\r\n ,;), '', "echo " + name.strip('\r\n ,;) + " > /etc/hostname",]
    stdout, stderr = Popen(command, stdout=PIPE, stderr=PIPE).communicate()
hosts.close()

Note: /etc/networking/hosts might be placed somewhere else for you. The important part here is that you loop through the /hosts file, and ssh to each machine echoing the given hostname to that machine.

Solution 2:

defhostname():

   '''
   function to change the hostname of the ubuntu server
   '''

   server_hostname = prompt ("The Hostname for the server is :")

   sed ("/etc/hostname", before='current hostname', after='%s' % (server_hostname), use_sudo=True,backup='')

   sudo ("init 6")

This will change the hostname according to your choice.

Solution 3:

in your fabric script you'll need to...

  • ssh into the machine as a user permitted to edit the hosts file ( via permissions or groups ). if you need to sudo into a user, search StackOverflow for issues regarding sudo and Fabric -- you'll need to tweak your fabfile to not prompt for a password.

  • fabric can have an awkward way to deal with reading/writing/opening files. you'll may be best off by cd into the right directory. something like...

    with cd('/etc/') run('echo new_hostname hostname')

Post a Comment for "How To Edit Hostname File Using Fabric"