linux 批量修改主机名脚本

Posted

tags:

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

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。。。。。。。

谢谢

这个要涉及到几个实现点:
1、批量登陆到不同主机:expect实现就可以
2、看需要修改的主机机器是什么发行版,Suse的一般修改HOSTNAME就可以,RedHat修改、/etc/sysconfig/里面的某个文件 。
如果只是单纯数字很很简单给个例子:
#!/usr/bin/perl
foreach (1..254)
print ("wb_3rdapi_cgi_$_"."\n");
参考技术A NEWNAME和HOSTNAME是在运行脚本的机器上赋值的,

ssh 后的参数用单引号引起来了, 所以远程机器上执行sed时, 无法传入正确的参数.
参考技术B

几个问题

    HOSTNAME是标准变量名,避免使用

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

变量值恐怕传递不过去sed 语法也不对,

 3. restart syslog能改hostname?不解


建议如下

#!/bin/bash
for dst_ip in `cat ip.txt`;do
OLDNAME=`ssh -p22 root@$dst_ip "hostname"`
NEWNAME=server_$dst_ip
ssh -p22 root@$dst_ip sed -i \\'s/HOSTNAME=$OLDNAME/HOSTNAME=$NEWNAME/g\\' /etc/sysconfig/network
ssh -p22 root@$dst_ip hostname $NEWNAME
done

追问

您好,如果我想要新生成的主机名格式如下应该怎么更改代码:

virplatform01
virplatform02
virplatform03

万分感谢
对脚本语言了解太少,请不吝赐教

本回答被提问者采纳

Linux下批量修改后缀名

一.rename解决

 1.  Ubuntu系统下

 rename ‘s/.c/.h/‘  ./*

 把当前目录下的后缀名为.c的文件更改为.h的文件

 2.  CentOS5.5系统下

 rename .c  .h   *.c

 把当前目录下的后缀名为.c的文件更改为.h的文件

 二.shell 脚本解决

 #!/bin/bash

 #http://blog.csdn.net/longxibendi

 find ./ -name *.c  | while read i

 do

       echo "$i";

        mv $i.c  $i.h

done

 

三.find  xargs 解决

find ./ -name "*.c" | awk -F "." ‘{print $2}‘ | xargs -i -t mv ./{}.c  ./{}.h

注意,第三种方案是递归的更改,会更改当前目录下及其子目录下所有匹配文件

 rename  的一种用法。

 一:问题的提出

 比如我的/home/有 m.php.bak    n.php.bak  俩个文件,怎么将文件名的 ;1    去掉。

三:解释

rename  ‘s/.php.bak/.php/‘   ./*  

格式  :

rename   ‘命令参数/原串/替换后的串/‘   目录文件

rename  表示重命名   

s       表示替换

 

转载至:http://sj0621.blog.51cto.com/753618/709376

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

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

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

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

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

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

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