自动化运维脚本语言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) 的相关文章

  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 如何在 Linux 上通过 FTP 递归下载文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 通过 Visual Studio 2017 使用远程调试时 Linux 控制台输出在哪里?

    我的Visual Studio 2017 VS2017 成功连接Linux系统 代码如下 include
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并

随机推荐

  • 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命令测试网段的主机连