今天接到上面工作任务,让更改多台主机的主机名称。使用python paramiko Module,随手写了一个批量修改主机名的脚本。


#!/usr/bin/env python
#-*- coding:utf-8 -*-
import paramiko
HOSTNAME='root'
PORT=22
PASSWD='123456'
NUM=range(139, 144)
def changNetwork():
    """ change /etc/sysconfig/network HOSTNAME. """
    name = 1
    for i in NUM:
        NM = "dcache-ct3-node%s.et.letv.com" % name
        HOST = "10.180.91.%s" % i
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(HOST, port=PORT, username=HOSTNAME, password=PASSWD)
        ssh.exec_command('sed -i "s/HOSTNAME=.*/HOSTNAME=%s/" /etc/sysconfig/network' % NM)
        ssh.close()
        name +=1
def changeHostName():
    """ change hostname. """
    name = 1
    for i in NUM:
        NM = "dcache-ct3-node%s.et.letv.com" % name
        HOST = "10.180.91.%s" % i
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(HOST, port=PORT, username=HOSTNAME, password=PASSWD)
        ssh.exec_command('hostname %s ' % NM)
        ssh.close()
        name +=1
def showNetwork():
    """ show /etc/sysconfig/network HOSTNAME. """
    name = 1
    for i in NUM:
        HOST = "10.180.91.%s" % i
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(HOST, port=PORT, username=HOSTNAME, password=PASSWD)
        stdin, stdout, stderr = ssh.exec_command('cat /etc/sysconfig/network | grep "^HOSTNAME="')
        for i in stdout:
            print i
        print HOST
        ssh.close()
        #print "dcache-zb6-node%s.et.letv.com" % name
        #name +=1
              
def showHostName():
""" show hostname. """
    name = 1
    for i in NUM:
        HOST = "10.180.91.%s" % i
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(HOST, port=PORT, username=HOSTNAME, password=PASSWD)
        stdin, stdout, stderr = ssh.exec_command('hostname')
        for i in stdout:
            print i
        print HOST
        ssh.close()
if __name__ == "__main__":
    changNetwork()
    changeHostName()
    showNetwork()
    showHostName()