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 批量修改主机名脚本的主要内容,如果未能解决你的问题,请参考以下文章