Shell交互批量更改主机名的方法

需求分析:

1、ssh公钥拷贝,提供无密码管理。

2、批量同步hosts文件到多台主机。

3、批量修改主机名。

实现:

首先编辑一份用于同步到多台主机的hosts文件

vi /etc/hosts
192.168.0.1 server1
192.168.0.2 server2
192.168.0.3 server3
192.168.0.4 server4
192.168.0.5 server5
192.168.0.6 server6
192.168.0.7 server7
192.168.0.8 server8
192.168.0.9 server9
192.168.0.10 server10

然后编辑shell脚本:

vi changename.sh
#!/bin/bash
# This is a shell script to change hostname
# version 0.1
# Created in 2015.8.11
# Creator Edison
export PATH=$PATH
export USER=root
export SNAMEPRE=server
export PASSWD=test01  #定义密码
for i in {1..10};
do /usr/bin/expect << EOF   ##这里用到了expect完成了确认yes和密码输入交互
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $USER@$SNAMEPRE$i
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"password:" {send "$PASSWD\r"}
}
interact
expect eof
EOF
ssh $USER@$SNAMEPRE$i "sed -i s/^HOST.*/HOSTNAME=$SNAMEPRE$i/ /etc/sysconfig/network";
scp /etc/hosts $USER@$SNAMEPRE$i:/etc/hosts;
done;

这里用到了expect完成自动交互确认和密码输入。

Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)。使用它系统管理员 的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果友谊大家可以留言交流。

(0)

相关推荐

  • Shell脚本实现自动修改IP、主机名等功能分享

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! 复制代码 代码如下: #!/bin/sh  #auto Change ip netmask gateway scripts  #wugk 2012-12-17  cat <<EOF +++++

  • NTFS权限设置以避免通过webshell遍历主机目录

    测试环境:Windows 2003 + IIS6.0 + Access数据库 运行上传的asp助手,在浏览其他分区的时候提示"路径未找到",用asp探针查看发现是因为对分区没有读取权限. 我们知道,匿名访问web使用系统中的"IUSR_主机名"这个用户,只要限制了这个用户的读取权限,即能限制访问者遍历服务器目录,保护服务器数据不被非法访问. 操作步骤: 1. 我的电脑,磁盘安全属性.2. 首先删除Everyone组.一般在服务器上看见Everyone就要删.3. 添

  • shell脚本实现批量测试局域网主机是否在线

    由于局域网内主机多,VLAN也多,为时常能知道在线主机的数量,编写脚本以查验在线主机. 效果是:主机在线显示绿色,主机离线显示红色结果. 用法:./ping IP段    例如:./ping 192.168.0 复制代码 代码如下: #!/bin/bash NETWORK=$1 for HOST in $(seq 1 254) do         ping -c 1 -w 1 $NETWORK.$HOST &>/dev/null && result=0 || result=

  • 阿里云主机一键安装lamp、lnmp环境的shell脚本分享

    阿里云主机一键安装lamp,lnmp,自动安装脚本,由阿里云主机分享 一键安装包下载地址:点击下载 1.阿里云分享的一键安装lamp,lnmp,此安装包包含的软件及版本为: 复制代码 代码如下: nginx:1.0.15.1.2.5.1.4.4 apache:2.2.22.2.4.2 mysql:5.1.73.5.5.35.5.6.15 php:5.3.18.5.4.23.5.5.7 php扩展:memcache.Zend Engine/ OPcache ftp:(yum/apt-get安装)

  • 虚拟主机封杀webshell提权!!!!!!!!!!

    1.为了打造一个安全的虚拟主机,在asp+SQL环境下,我们要做的是封杀ASP webshell.封杀serv-u提权漏洞和SQL注入的威胁 2.默认安装的win主机上webshell功能十分强大,我们要封杀webshell的哪些功能 也就是不让webshell查看系统服务信息,执行cmd命令和略览文件目录,我们要实现的功能是每个用户只能访问自己的目录,而且可以用FSO等ASP组件,在这里我以海洋木马和win200为例给大家演示一下.好多资料都是网上收集而来,在这表示感谢. 3.现在我们先设置好

  • nginx虚拟主机防webshell完美版

    我们先来看下nginx.conf server  {    listen       80;    server_name  www.a.com;    index index.html index.htm index.php;    root  /data/htdocs/www.a.com/; #limit_conn   crawler  20; location ~ .*\.(php|php5)?$    {            #fastcgi_pass  unix:/tmp/php-c

  • php管理nginx虚拟主机shell脚本实例

    本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考.具体分析如下: 使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考: 复制代码 代码如下: #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"=

  • PowerShell脚本实现检测网络内主机类型

    最近一直在写一个自动检测网络内主机类型的脚本.基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备.对一个运维人员来说往往需要尽快熟悉一个陌生的网络.所以这个脚本就很方便了,如果有更好的建议欢迎指正感谢! 复制代码 代码如下: ############################################ #Author:Lixiaosong #Email:lixiaosong8706@gmail.com #For:检测/24掩

  • 使用PowerShell获取当前主机内存使用量和总量的方法

    群里一个小兄弟的提问 用PowerShell来写比c#要简单太多了,WMI直接提供了方法,调用即可. #made by kukisama $a=(get-wmiobject -class Win32_PhysicalMemory -namespace "root\cimv2").Capacity $b=(get-wmiobject -class Win32_PerfFormattedData_PerfOS_Memory -namespace "root\cimv2"

  • Shell交互批量更改主机名的方法

    需求分析: 1.ssh公钥拷贝,提供无密码管理. 2.批量同步hosts文件到多台主机. 3.批量修改主机名. 实现: 首先编辑一份用于同步到多台主机的hosts文件 vi /etc/hosts 192.168.0.1 server1 192.168.0.2 server2 192.168.0.3 server3 192.168.0.4 server4 192.168.0.5 server5 192.168.0.6 server6 192.168.0.7 server7 192.168.0.8

  • Python批量更改文件名的实现方法

    Python批量更改文件名的实现方法 前言: 由于后台数据有好多,但是文案提供过来的图片命名全部没有按照格式来命名,Python这么强大的语言,肯定是能够处理这个问题的,于是我就写了一个小脚本批量改文件名. 版本相关 操作系统:Mac OS X EI Caption Python版本:2.7 IDE:Sublime 思路 我的思路是这样的,在当前文件下创建一个新的目录newfile,然后把所有的文件拷贝过去重命名一下就行了 素材 文案提供过来的图片全部都是1.jpg,2.jpg--这样顺序递增的

  • python批量更改目录名/文件名的方法

    跑模型和测试一些批量操作时,常常需要一个或多个文件中的文件的命名格式具有一定的规律.有时候获取的数据又是从一些网站爬取下来的,数据名具有一定的不规律性,这是就需要我们去重命名这些文件.10,20个还好说,如果是上百个,上千个,甚至上万个呢?我们还能去手动命名吗?显然不可能的!这时就需要批量更改文件名的操作. 一.python实现批量更改目录名 这里以重命名图片为例 # -*- coding: UTF-8 -*- """ @Author :远方的星 @Time : 2021/4

  • Linux修改网卡名称、主机名的方法

    Linux修改网卡名称.主机名 环境:VirtualBox 5.0.14 + RHEL 6.5 需求:个人实验搭建一套Standby RAC时,为了节约时间,直接复制之前安装RAC的主机模板. 但复制之后发现网卡名称不一致: 我这里的环境,Primary RAC的Public IP和Private IP分别对应的网卡名称是eth2,eth3.  而复制Standby RAC的其中一台网卡名称是eth6,eth7:另一台是eth4,eth5.为了保持一致方便后续管理维护,需要将Standby RA

  • oracle 更改数据库名的方法

    如何修改数据库名(db_name)及实例名(Instance_name or Service_name) Nid是Oracle从9iR2开始提供的工具,可以用来更改数据库名称,而无需通过之前重建控制文件等繁琐方式. nid是自带的工具,在oracle_home/bin目录中.以下方法假设登陆到数据库本机做. 目的:在本例中,假设原来的数据库名为orcl,要改成dborcl,原实例名(service_name,instance_name)orcl,要改成dborcl. 步骤概述: 1.检查当前的参

  • 修改Linux主机名的方法

    执行命令 hostname,修改当前系统的主机名 # hostname newhost 修改 /etc/sysconfig/network,使得下次启动时使用新的主机名 hostname=newhost 修改 /etc/hosts.不修改的话,apache等需要解析主机名的服务将不能启动 127.0.0.1 newhost localhost 最后就是命令行提示符中的主机名还没有改变,如果很在意的话,重新登录一下就行了

  • Linux下如何永久修改主机名的方法步骤

    想修改自己的主机名,那你可以根据下面的步骤实现 使用hostname 使用hostname命令只能临时改变我们的主机名,当我们重启之后主机名还会恢复成原来的 # hostname newhostname 输入hostname linux即可将主机名改成linux,使用uname -n命令查看 这时我们的主机名已经改变了,左边为什么依然是Peithon呢,你试试重开一个终端,或者要是用Xshell的话,把会话重开一遍 修改配置文件 想要永久修改自己的主机名,得通过下面的步骤 修改文件/etc/sy

  • Shell脚本批量添加扩展名的两种方法分享

    方法1: 复制代码 代码如下: for file in  `ls`; do mv $file $file.txt; done 方法2: 复制代码 代码如下: find . -type f |xargs -i mv {} {}.txt 还有一些试验不成功的,先记录在此. 1.用rename命令修改后缀名,这个是最简单最省事的办法 复制代码 代码如下: [root@demo test_rename]# ll 总计 20 -rw-r–r– 1 root root 0 09-27 00:57 renam

  • shell脚本批量删除es索引的方法

    发现elasticsearch集群的状态是red,unassign的分片数很多,看了下都是些旧的日期的索引(应该是定时任务删除失败导致的). curl -XGET ip:port/_cat/shards | grep UNASSIGNED 数量有几百个,写个脚本处理下,先恢复成green.red状态好像会影响索引创建和数据迁移 先把需要删除的索引导出到文件 curl -XGET ip:port/_cat/shards | grep UNASSIGNED >> needDelIndex.txt

  • bash批量重命名、批量更改后辍的方法

    用特定的格式重命名当前目录的图像文件,脚本如下: 复制代码 代码如下: #!/bin/bash#Filename:rename_photo.shset -xcount=1for img in *.jpg *.pngdonew=image-$count.${img##*.}mv "$img" "$new" 2> /dev/nullif [ $? -eq 0 ]thenecho "Renameing $img to $new"let count

随机推荐