linux 批量修改主机名脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 批量修改主机名脚本相关的知识,希望对你有一定的参考价值。

求一批量修改主机名脚本,一个IP地址对应一个主机名,不管是python expect shell脚本 只要能达到目录即可! 在线等,thanks......

参考技术A 以下方法可以实现你的要求
#!/bin/bash
for i in `cat server`
do
Ipaddr=`echo $i|awk 'print $1'`
#Uname=`echo $i|awk 'print $2'`
#Upasswd=`echo $i|awk 'print $3'`
/usr/bin/expect >/dev/null <<EOF1
set timeout 5
spawn ssh root@$Ipaddr
#spawn ssh $Uname@$Ipaddr
expect
"*yes/no" send "yes\r"; exp_continue
"*assword:" send "root\r"
# "*assword:" send "Upasswd\r"

expect "#*"
send "修改主机名;\r"
send "重启服务;\r"
expect eof
EOF1
done追问

能否把 cat server 内容举例出来,thanks.....

追答

192.168.1.1 root root ----这种格式

本回答被提问者采纳
参考技术B 1、为了脚本在目标主机执行命令,你需要实现ssh无密码访问目标主机
2、ip.txt每行一个ip,新主机名包含ip,-p22不是必须的,可以去掉,或者替换成ssh定制的端口。

3、实例
#!/bin/bash

for dst_ip in `cat ip.txt`;do
HOSTNAME=`ssh -p22 root@$dst_ip "hostname"`
NEWNAME=server_$dst_ip

ssh -p22 root@$dst_ip 'sed -i 's!$HOSTNAME!$NEWNAME!g' /etc/sysconfig/network'

ssh -p22 root@$dst_ip 'service syslog restart'
done追问

您好:

我刚试了你写的脚本,当执行完脚本以后,脚本所在的服务器可以更改主机名,另外两台远程服务器无法更改,方便的话加我QQ 553188870。。。。。。。

谢谢

批量修改Linux密码脚本(Python)

搭建环境
centos 7.4
使用脚本
python
批量修改connect用户的密码
生成密码为随机密码 保存为xls文档
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
############################################
#通过脚本批量修改Linux主机密码并保存到xls中
#雪文龙 2018-5-18 V1
#
#修改者:xxx
#修改时间:2018-xx-xx 
#修改内容:修改内容描述
############################################

import random
import string,os
import pexpect
import xlrd,xlwt
from xlwt import Style
from xlutils.copy import copy
 
def passwd_creat():
    salt = ‘‘.join(random.sample(string.ascii_letters + string.digits, 8))
    return salt
 
def passwd_change(userip, oldpasswd, newpasswd):
    child = pexpect.spawn(‘ssh connect@‘+userip)                 ###connect 用户可改root
    fout = file(‘/home/shell/passwd/newpasslog.txt‘,‘a‘)            ##定义日志文件,
    child.logfile = fout
    index = child.expect([‘password:‘,‘continue connecting (yes/no)?‘])
    if index == 0:
        child.sendline(oldpasswd)
    elif index == 1:
        child.sendline(‘yes‘)
        child.expect(‘password:‘)
        child.sendline(oldpasswd)
    child.expect(‘$‘)
    child.sendline(‘sudo -i‘)
    child.expect(‘#‘)
    child.sendline(‘echo ‘+newpasswd+‘ | passwd --stdin connect‘)   ### connect 用户可改root
    child.expect(‘#‘)
    child.sendline(‘exit‘)
 
def open_excel(passwdfile):
    data = xlrd.open_workbook(passwdfile)
    return data
 
def get_coldata(passwdfile,sheet_name,num):
    data = open_excel(passwdfile)
    table = data.sheet_by_name(sheet_name)
    coldata = table.row_values(num)
    return coldata
 
def get_rownum(passwdfile,sheet_name):
    data = open_excel(passwdfile)
    table = data.sheet_by_name(sheet_name)
    rowsNum = table.nrows  #获取总行数
    colsNum = table.ncols   #获取总列数
    return rowsNum,colsNum
 
def add_newpwd(row, col, str):
    rb = xlrd.open_workbook(passwdfile, formatting_info=True)
    wb = copy(rb)
    ws = wb.get_sheet(0)
    ws.write(row, col, str)
    wb.save(passwdfile)
 
 
if __name__ == "__main__":
    passwdfile = "/home/shell/passwd/newpasswd.xls"     #文档读取输出路径
    sheet_name = "Sheet1"
    rowsNum, colsNum = get_rownum(passwdfile,sheet_name)
    add_newpwd(0,colsNum,‘newpasswd‘)
    for i in range(1,rowsNum):
        newpasswd = passwd_creat()
        coldata = get_coldata(passwdfile,sheet_name,i)
        passwd_change(coldata[0], coldata[1], newpasswd)
        add_newpwd(i,colsNum,newpasswd)

  

 
 
1. 上传脚本,以及脚本需要的模块
1.1 创建转到脚本,模块包存放地址。
技术图片
1.2安装上传工具。
技术图片
1.3上传模块包脚本。
技术图片
rz上传
sz下载
技术图片
2.安装所需要的模块。
2.1 解压gz包。
技术图片
2.2 cd到解压文件目录下
技术图片
2.3 执行脚本安装模块
技术图片
目录下的所有gz包都要安装过程略过
技术图片
3.执行脚本测试实验。
3.1创建一个connect用户并设置密码。并登陆测试。
技术图片
 
技术图片
3.2创建文档(文档名需要和脚本里的名称一样)
技术图片
3.3上传文档到定义的路径下
技术图片
 
技术图片
3.4执行脚本测试
技术图片
3.5
sz下载表格查看密码
技术图片
 
技术图片
3.6 使用新密码登陆测试
技术图片
 
 
 

以上是关于linux 批量修改主机名脚本的主要内容,如果未能解决你的问题,请参考以下文章

秘钥推送脚本,批量修改主机名

秘钥推送脚本,批量修改主机名

Linux批量修改多台服务器的主机名(hostname)

如何在Linux shell中获取本机主机名

Linux修改主机名脚本-不重启-支持RedHatSUSE

Kali Linux系统重新更正主机名以及修改用用户密码教程: