自动化运维脚本语言shell练习(2)

2023-11-10

1、编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10
2、编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如: 输入192.168.48 则ping 192.168.48.125 - 192.168.48.135,将可以ping通的主机IP地址写入到 /tmp/host_up.txt文件中,不能ping通的主机IP地址写入到: /tmp/host_down.txt文件中
3、使用for循环实现批量主机root密码的修改
(1) 打开多台主机
(2) 使用ssh-keygen命令建立密钥对
(3) 多台主机间通过ssh-copy-id进行免密登录
(4) 编写脚本for3.sh,通过for循环登录主机修改对方root账户密码

目录

 1、编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10

1.1编写脚本

1.2执行,并查看

 2、编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如: 输入192.168.48 则ping 192.168.48.125 - 192.168.48.135,将可以ping通的主机IP地址写入到 /tmp/host_up.txt文件中,不能ping通的主机IP地址写入到: /tmp/host_down.txt文件中

2.1编写脚本

2.2执行脚本,并查看

3、使用for循环实现批量主机root密码的修改(1) 打开多台主机(2) 使用ssh-keygen命令建立密钥对(3) 多台主机间通过ssh-copy-id进行免密登录(4) 编写脚本for3.sh,通过for循环登录主机修改对方root账户密码

3.1将要连接的IP记录到一个文件中

3.2建立免密sshd登录

3.3编写脚本

3.4执行脚本,并查看结果


 1、编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如: test1、test2、test3、.....、 test10

1.1编写脚本

[root@quantou ~]# vim for1.sh

#!/bin/bash

read -p "请输入用户账户名前缀: "  prefix
read -p "请输入中户的密码: "  passwd

for ((i=1;i<=20;i++))     # 循环20次
do      
        user=$prefix$i    # 存储完整账户名
        if id $user  &>  /dev/null    # 检查账户是否存在
        then    
                echo  "$user 已存在"
        else    
                useradd  $user        # 创建账户
                if [ $? -eq 0 ]       # 若账户创建成功则设置密码
                then    
                        echo  "$passwd" | passwd  --stdin  $user  &> /dev/null
                else    
                        echo  "用户创建失败"
                        exit
                fi      
        fi      
done    

1.2执行,并查看

[root@quantou ~]# bash for1.sh 
请输入用户账户名前缀: dianzandezuishuai
请输入中户的密码: 123456
[root@quantou ~]# cat  /etc/passwd  |  tail  -20 

 2、编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如: 输入192.168.48 则ping 192.168.48.125 - 192.168.48.135,将可以ping通的主机IP地址写入到 /tmp/host_up.txt文件中,不能ping通的主机IP地址写入到: /tmp/host_down.txt文件中

2.1编写脚本

[root@quantou ~]# vim for2.sh

#!/bin/bash

read -p "请输入网段:"  ip

for ((i=125;i<=135;i++))
do      
        IP="$ip"."$i"
        if  ping  -c 2 -w 3 $IP  &> /dev/null
        then    
                echo  "$IP is up"  >>  /tmp/host_up.txt
        else    
                echo  "$IP is up"  >>  /tmp/host_down.txt
        fi      
done    

echo  "up ip: "
cat  /tmp/host_up.txt

echo

echo "down ip :"
cat  /tmp/host_down.txt

if  ping  -c 2 -w 3 $IP  &> /dev/null   ## -c后跟ping执行次数     -w后跟执行时间(时间不宜太短)

2.2执行脚本,并查看

[root@quantou ~]# bash for2.sh 
[root@quantou ~]# cat /tmp/host_up.txt
[root@quantou ~]# cat /tmp/host_down.txt

3、使用for循环实现批量主机root密码的修改
(1) 打开多台主机
(2) 使用ssh-keygen命令建立密钥对
(3) 多台主机间通过ssh-copy-id进行免密登录
(4) 编写脚本for3.sh,通过for循环登录主机修改对方root账户密码

3.1将要连接的IP记录到一个文件中

[root@quantou ~]# vim ip.txt

192.168.50.131
192.168.50.133
##将需要连接的虚拟机IP写入名为ip.txt文件中

3.2建立免密sshd登录

[root@quantou ~]# ssh-keygen -t rsa   # 一路回车
[root@quantou ~]# ssh-copy-id  root@192.168.48.131   # 输入yes及密码
[root@quantou ~]# ssh-copy-id  root@192.168.48.132   # 输入yes及密码

3.3编写脚本

[root@quantou ~]# vim for3.sh

#!/bin/bash
[root@server ~]# vim  for3.sh
#!/bin/bash

read -p  "请输入密码:"  passwd

for  i in  `cat ip.txt`   # 循环读取文本中的IP地址
do      
        ssh $i  "echo '$passwd' | passwd --stdin  root"  # 远程登录修改密码
done    

3.4执行脚本,并查看结果

[root@quantou ~]# bash for3.sh
请输入密码:123456
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@quantou ~]# ssh root@192.168.50.131
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sun Apr 23 14:15:39 2023 from 192.168.50.1

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化运维脚本语言shell练习(2) 的相关文章

  • 如何使用 GCP 负载均衡器将 HTTP 重定向到 HTTPS

    我正在 GCP 中使用 2 个节点 Apache httpd 设置负载均衡器 域为 lblb tonegroup net 目前我的负载均衡器工作正常 流量正在两个节点之间切换 但我如何配置重定向http lblb tonegroup net
  • 在 64 位 RHEL 上安装 32 位库 (glibc),而不使用 yum

    我试图让 32 位应用程序在 64 位 RHEL 6 1 上运行 但该计算机无法访问互联网 有没有办法在 64 位 RHEL 上安装 32 位 glibc 而不使用 yum 即仅使用 RPM 安装 我从 RHEL 6 1 ISO 中获取了
  • Bash:使用参数扩展查找和替换

    我想更换输入法 find string include 圆进度 38px 30px 4eb630 和输出 输出字符串 include 圆进度 38px 30px using find string pattern replacement s
  • 从哪个 Linux 内核/libc 版本开始,Java Runtime.exec() 在内存方面是安全的?

    在工作中 我们的目标平台之一是运行 Linux 的资源受限的迷你服务器 内核 2 6 13 基于旧 Fedora Core 的自定义发行版 该应用程序是用 Java Sun JDK 1 6 04 编写的 Linux OOM Killer 配
  • Symfony 权限被拒绝

    谁能帮我解决我收到的以下错误消息 我终于在虚拟机上安装了 Symfony 它似乎工作正常 除了我偶尔收到这样的消息 1 2 ContextErrorException Warning SessionHandler read open var
  • 如何使用终端打开“-”虚线文件名?

    我尝试了 gedit nano vi leafpad 和其他文本编辑器 它无法打开 我尝试了 cat 和其他文件查找命令 我向你保证这是一个文件而不是目录 这种方法有很多误解 因为使用 作为参数指的是标准输入 标准输出 i e 开发 标准输
  • IPC:在两个程序之间使用 C++ 中的命名管道

    我试图在同一台机器上运行的两个不同程序之间实现IPC 在我的例子中是CentOS7 为了实现一种松散耦合 我决定对 IPC 使用命名管道 因此 我正在使用以下示例并遇到了不同的问题 创建并写入管道 include
  • 为什么 gcc 会在显然不需要的时候生成 PLT?

    考虑这段代码 int foo int main foo while 1 int foo 在共享对象中实现 编译此代码gcc o main main c lfoo nostdlib m32 O2 e main no pic L shared给
  • posix 和 linux 特定函数的 C++ 包装器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有什么好的库将 posix 和 linux 函数和结构 例如套接字或文件描述符 包装到 C 类中
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • Linux 上共享内存的生命周期是多长

    我正在使用 ftok shmget shmat shmdt 函数在 Linux 上创建 写入和读取共享段 如果我写入一个程序中的段 然后退出 然后稍后从另一个程序中读取该段 我会惊讶地发现数据仍然存在 我预计当共享一个段的最后一个进程执行
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 使用vim,如何快速刷新正在处理的网页?

    我已经使用 VIM 几个星期了 同时处理各种网络语言 我真的很喜欢它 我发现必须点击或单击浏览器并刷新页面才能看到代码更改的效果 这很麻烦 更烦人的是 因为我使用的是 Virtual Box 而且我倾向于在主机系统上处理 PDF 文件 因此
  • 使用 sysfs 的 Linux 用户空间 GPIO 中断

    我想使用 sysfs 在用户空间上使用 GPIO 中断 我使用这些命令 root at91 gpio109 gt echo 109 gt export root at91 gpio109 gt cd gpio109 root at91 gp
  • Zip 实用程序在 Linux 中每次都给我不同的 md5sum

    当我在 Linux 中压缩 Zip 2 31 同一个文件时 每次都会得到不同的校验和 如何保持上次的 md5sum 相同 我正在使用 yum 提供的最新 zip 更新 生成的存档不仅包含压缩文件数据 还包含 额外的文件属性 如参考zip 文
  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • 32 位 x86 汇编中堆栈对齐的职责

    我试图清楚地了解谁 调用者或被调用者 负责堆栈对齐 64 位汇编的情况相当清楚 它是由caller 请参阅系统 V AMD64 ABI 第 3 2 2 节栈帧 输入参数区域的末尾应按 16 对齐 32 如果 m256 在堆栈 字节边界上传递
  • 共享库 RPATH 和二进制 RPATH 优先级

    如果共享库链接到二进制文件 并且共享库还依赖于其他库 则共享库的 RPATH 和二进制文件的 RPATH 的优先级 链接器搜索顺序 是什么 二进制文件的 RPATH 是否可以覆盖共享库中的 RPATH 我在共享库RPATH中设置的 ORIG

随机推荐

  • python画易烊千玺_Python02

    class A object def init self 私有 在变量名称前加上 私有 不可继承 不可在外部调用 但是可以在内部调用 self a 1000 约定使用 来表示私有 self def B self print self a A
  • python(数据分析)第4天:绘制网格

    plt grid import matplotlib pyplot as plt import random import matplotlib from matplotlib import cycler from matplotlib f
  • 解决ssh_exchange_identification: read: Connection reset by peer

    解决ssh exchange identification read Connection reset by peer linux远程免密登陆出现上述报错 1 先在远程机器上 vi etc hosts allow 在里面写入 允许所有ip连
  • Pyspark的dataframe写入hive表

    文章最前 我是Octopus 这个名字来源于我的中文名 章鱼 我热爱编程 热爱算法 热爱开源 所有源码在我的个人github 这博客是记录我学习的点点滴滴 如果您对 Python Java AI 算法有兴趣 可以关注我的动态 一起学习 共同
  • 第八章,索引的创建与设计原则

    第八章 索引的创建与设计原则 1 索引的声明与使用 1 1 索引的分类 SQL的索引包括普通索引 唯一性索引 全文索引 单列索引 多列索引和空间索引等 功能逻辑上说 索引主要有 4 种 分别是普通索引 唯一索引 主键索引 全文索引 按物理实
  • 面试题-Java集合、IO

    一 Java集合 HashMap的内部结构 扩容 为什么是2的幂次方 https www cnblogs com chengxiao p 6059914 html HashMap的实现原理 http www importnew com 27
  • 三个空饮料瓶可以换一瓶饮料,给你1箱(50瓶)饮料,你能喝多少瓶饮料?

    突然想起来了一道小学生的数学题 三个空饮料瓶可以换一瓶饮料 给你1箱 50瓶 饮料 你能喝多少瓶饮料 哈哈 于是写了一段代码 不知道还有没有高人了指点下 本人小菜鸟一只 function demo num kong test num2 nu
  • 第三章部分作业重新调试结果(第五周)

    求 百钱百鸡 问题 鸡翁一值钱五 鸡母 一值钱三 鸡雏三值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 设买了x只鸡翁 y只鸡目 z只鸡雏 则有 x y z 100 5 x 3 y 1 3 z 100 15 x 9 y z 300 inclu
  • 变分贝叶斯

    Variational Bayesian inference 参考文献 徐亦达老师变分推断课件 A tutorial on variational Bayesian inference 白板推导指数族分布 白板推导变分推断 Log like
  • 实测最像ChatGPT的中文产品:能解释三体、懂弱智吧的梗,内测开启人人都能试!...

    明敏 发自 凹非寺量子位 公众号 QbitAI 最像ChatGPT的中文产品 出现了 昨晚 一个名叫Inspo的生成式对话AI 刚刚在 民间 开启内测 马上引发不小反响 体验过的博主表示 1分钟搞定3份策划 工作5年没它能写 有人自己上手试
  • IP数据报检验和计算

    在进行计算之前先补充一下基础知识 一 原码 反码和补码 原码 原码是计算机机器数中最简单的一种形式 数值位就是真值的绝对值 符号位位 0 时表示正数 符号位为 1 时表示负数 原码又称带符号的绝对值 为了方便整数和小数区别 整数的符号位与数
  • Android 实现按钮 跳转到某网页

    这个是我在刚开始学习Android的时候 我同学要做一个手机端的控制 他说我的东西都用 java web写好了 你只要给我写一个跳转按钮即可 其实很简单只是简单地按钮点击事件和Intent跳转 但是毕竟是第一次帮别人做东西还觉得挺有意义的
  • YouTube深度学习视频推荐系统

    YouTube推荐系统架构 YouTube推荐系统架构是经典的两级模型 召回 精排模型 第一级用候选集生成模型完成候选视频的快速筛选 在这一步 候选视频集合由百万量级降至几百量级 这相当于经典推荐系统架构中的召回层 第二级用排序模型 Ran
  • 【mac】iTerm2中ssh保持连接不断开

    1 概述 转载 http bluebiu com blog iterm2 ssh session idle html 一 一个iTerm2蛋疼的问题 最近基友搞了台mbp 在装一些常用app时 跟我交流到一个情况 用iTerm2进行ssh时
  • 树莓派串口调试助手minicom的简单使用

    安装 minicom sudo apt get install minicom 启动minicom minicom D dev ttyAMA0 minicom 默认波特率为115200 D 代表端口 b 设置波特率参数 例如 b 9600
  • 网络调试工具TCP/UDP socket的使用

    TCP UDP socket调试工具的使用 可以在想服务器发送命令 或者查看服务器返回的数据 打开界面后选择左边客户端还是服务端 使用TCP还是udp 点击创建相应的模拟环境
  • docker 容器满了常用处理方法

    docker 容器满了常用处理方法 1 运行 df h 查看剩余磁盘占用情况 2 进入到docker目录 cd var lib docker 3 运行du h max depth 1 检索文件的最大深度1 即只检索汇总计算当前目录下的文件
  • Oracle用function生成UUID方法

    CREATE OR REPLACE FUNCTION get uuidRETURN VARCHARISguid VARCHAR 50 BEGINguid lower RAWTOHEX sys guid RETURNsubstr guid 1
  • 移动端/帆软移动报表调用拨打电话

    HTML a标签的href 属性 tel 点击可以直接拨打电话 移动端 a href 13622178579 a 把某个单元格 形态赋值为 公式形态 a href style color 508ef9 a ps F1列存储电话号码
  • 自动化运维脚本语言shell练习(2)

    1 编写脚本for1 sh 使用for循环创建20账户 账户名前缀由用户从键盘输入 账户初始密码由用户输入 例如 test1 test2 test3 test10 2 编写脚本for2 sh 使用for循环 通过ping命令测试网段的主机连