在创建脚本以更新/ etc / hosts文件中的主机名时遇到多个问题?

渴望

我是脚本的新手,因此需要帮助来解决此问题。

我们大约有3000台VM和450台物理服务器,它们是基于Linux的服务器(很少有ubuntu从9.x开始,其中很少是Susu从8.X开始,而大多数是RHEL从4.x到7.4)。所有这些我都需要在其各自的/ etc / hosts文件中添加一些带有IP详细信息的主机名条目。

我在每台服务器上都有不同的用户,可以使用全部sudoers访问权限。因此,我创建了一个CSV文件,其主机名,用户名和密码格式。其中包含登录所需的详细信息。文件名是“ hostname_logins.csv”

我需要将文件(即hostname_list)上传到每个服务器,然后在每个服务器主机文件中更新这些相同的详细信息。

我将使用一台RHEL 6服务器运行此脚本。(所有其他主机都可以从该服务器解析并且可以访问,我已经确认了。)

因此需要帮助来修复此脚本。

脚本不确定是什么错误,因为我是脚本的新手:

#!/bin/bash

while read hostname_login user_name user_password
do
        scp -p ./hostname_list $user_name:$user_password@$hostname_login:/tmp
        ssh -eS $user_name:$user_password@$hostname_login [bash -c "echo rishee | sudo -S mv /tmp/hostname_list ./hostname_list && cp -p /etc/hosts /etc/hosts.bkp && cat ./hostname_list >> /etc/hosts && rm -f ./hostname_list"]
done < hostname_logins.csv

我需要将其作为一个脚本运行在所有这些服务器上。提前致谢。

斯科特·斯滕斯兰德

使脚本能够重复执行而不会产生副作用(幂等)始终是一个好主意...在上面,您正在备份关键文件/ etc / hosts,但是在下一次运行时要擦除相同的备份-如果/ etc / hosts损坏,即使不致命也非常危险

运行初步脚本以简单地将/ etc / hosts复制到某个工作文件中,然后针对该工作副本运行脚本,然后在对某些玩具服务器有效的情况下运行脚本,然后使用实际的/ etc / hosts发布您的脚本

您上面的命令集使用您的userid和sudo混合在一起,这将给您权限错误...建议您将以下文件scp放入每个框,然后在每个远程框上将其作为sudo执行...了解/ etc /中的语法主机并确认您的附加行符合良好的语法

#!/bin/bash

set -o errexit #  exit on any error
set -o xtrace  #  print command prior to execution

hostname_file=/root/hostname_list

working_hosts=/etc/hosts.working

mv /tmp/hostname_list  $hostname_file 

cp -p /etc/hosts $working_hosts

cat $hostname_file  >> $working_hosts

rm $hostname_file

echo here is contents of file $working_hosts

cat $working_hosts

上面的脚本还没有完成,但是如果您更改上面的脚本以使用真实的/ etc / hosts文件,它将在玩具服务器上花费90%的时间,请确保您重新启动了该玩具服务器并签出了OK

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我想使用Shell脚本从/ etc / hosts打印所有IP地址和主机名

来自分类Dev

在/ etc / hosts中设置主机名别名?

来自分类Dev

如果不是/ etc / hosts,则主机名别名在哪个文件中是持久的?

来自分类Dev

如何从类似于/ etc / hosts的文件中的IP地址获取主机名

来自分类Dev

在〜/ .ssh / config主机名和/ etc / hosts之间发生冲突时,优先处理什么?

来自分类Dev

使用/ etc / hosts使用端口解析主机名

来自分类Dev

仅在Linux上使用/ etc / hosts解析主机名

来自分类Dev

将主机名回显到/ etc / hosts

来自分类Dev

我想更改主机名-编辑/ etc / hosts文件是否足够?

来自分类Dev

需要使用已知主机名grep / etc / hosts,然后从/ etc / hosts捕获主机名的IP地址

来自分类Dev

配置etc /主机名

来自分类Dev

httpd:如何将127.0.0.1:81保存为/ etc / hosts中的主机名

来自分类Dev

我应该如何在/ etc / hosts中添加主机名?

来自分类Dev

编辑/ etc / hosts和/ etc / sysconfig / network不会改变主机名

来自分类Dev

使用带有sed的bash如何从主机名命令中提取IP并将其保存在/ etc / hosts文件中

来自分类Dev

在puppet中应用主机资源以更新/ etc / hosts

来自分类Dev

创建脚本以移动忽略错误的文件

来自分类Dev

Bash:编写一个函数来检查/ etc / hosts中是否存在给定的主机名

来自分类Dev

Linux上/ etc / hosts中的Curl脚本

来自分类Dev

如何将我的容器的主机名添加到/ etc / hosts?

来自分类Dev

/ etc / hosts上的自定义主机名未解析

来自分类Dev

为什么将主机名添加到/ etc / hosts条目会更改查看的网站

来自分类Dev

如何更新 GKE 中的工作节点 /etc/hosts 文件

来自分类Dev

创建脚本以汇总多个表中的1列

来自分类Dev

重新启动后,即使在/ etc / hostname中输入了主机名,主机名仍被覆盖

来自分类Dev

创建shell脚本以从指定目录中删除某些文件

来自分类Dev

创建简单的Terraform脚本以启动AWS EC2实例时遇到问题

来自分类Dev

语法更新/ etc / sudoers文件

来自分类Dev

/ etc / hosts文件丢失–如何创建新的hosts文件?

Related 相关文章

  1. 1

    我想使用Shell脚本从/ etc / hosts打印所有IP地址和主机名

  2. 2

    在/ etc / hosts中设置主机名别名?

  3. 3

    如果不是/ etc / hosts,则主机名别名在哪个文件中是持久的?

  4. 4

    如何从类似于/ etc / hosts的文件中的IP地址获取主机名

  5. 5

    在〜/ .ssh / config主机名和/ etc / hosts之间发生冲突时,优先处理什么?

  6. 6

    使用/ etc / hosts使用端口解析主机名

  7. 7

    仅在Linux上使用/ etc / hosts解析主机名

  8. 8

    将主机名回显到/ etc / hosts

  9. 9

    我想更改主机名-编辑/ etc / hosts文件是否足够?

  10. 10

    需要使用已知主机名grep / etc / hosts,然后从/ etc / hosts捕获主机名的IP地址

  11. 11

    配置etc /主机名

  12. 12

    httpd:如何将127.0.0.1:81保存为/ etc / hosts中的主机名

  13. 13

    我应该如何在/ etc / hosts中添加主机名?

  14. 14

    编辑/ etc / hosts和/ etc / sysconfig / network不会改变主机名

  15. 15

    使用带有sed的bash如何从主机名命令中提取IP并将其保存在/ etc / hosts文件中

  16. 16

    在puppet中应用主机资源以更新/ etc / hosts

  17. 17

    创建脚本以移动忽略错误的文件

  18. 18

    Bash:编写一个函数来检查/ etc / hosts中是否存在给定的主机名

  19. 19

    Linux上/ etc / hosts中的Curl脚本

  20. 20

    如何将我的容器的主机名添加到/ etc / hosts?

  21. 21

    / etc / hosts上的自定义主机名未解析

  22. 22

    为什么将主机名添加到/ etc / hosts条目会更改查看的网站

  23. 23

    如何更新 GKE 中的工作节点 /etc/hosts 文件

  24. 24

    创建脚本以汇总多个表中的1列

  25. 25

    重新启动后,即使在/ etc / hostname中输入了主机名,主机名仍被覆盖

  26. 26

    创建shell脚本以从指定目录中删除某些文件

  27. 27

    创建简单的Terraform脚本以启动AWS EC2实例时遇到问题

  28. 28

    语法更新/ etc / sudoers文件

  29. 29

    / etc / hosts文件丢失–如何创建新的hosts文件?

热门标签

归档