bash代码 验证某台主机是否在线,建用户账户并设置密码,删除账户

本文主要是介绍bash代码 验证某台主机是否在线,建用户账户并设置密码,删除账户,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        使用双分支的 if 条件语句来验证某台主机是否在线,然后根据返回值的结果,要么显示主机在线信息,要么显示主机不在线信息。这里的脚本主要使用 ping 命令来测试与对方主机的网络联通性,而 Linux 系统中的 ping 命令不像 Windows 一样尝试 4 次就结束,因此为了避免用户等待时间过长,需要通过-c 参数来规定尝试的次数,并使用-i 参数定义每个数据包的发送间隔,以及使用-W 参数定义等待超时时间。

chkhost.sh内容

#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "Host $1 is On-line."
else
echo "Host $1 is Off-line."
fi

事例:

[root@localhost ch4]# sh chkhost.sh 192.168.1.1
Host 192.168.1.1 is On-line.
[root@localhost ch4]# sh chkhost.sh 192.168.1.2
Host 192.168.1.2 is Off-line.

       下面使用 for 循环语句从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码。首先创建用户名称的列表文件 users.txt,每个用户名称单独一行。读者可以自行决定具体的用户名称和个数:

[root@localhost ch4]# vim users.txt 
andy 
barry
carl
duke
eric
george

         接下来编写 Shell 脚本 Example.sh。在脚本中使用 read 命令读取用户输入的密码值,然后赋值给 PASSWD 变量,并通过-p 参数向用户显示一段提示信息,告诉用户正在输入的内容即将作为账户密码。在执行该脚本后,会自动使用从列表文件 users.txt 中获取到所有的用户名称,然后逐一使用“id 用户名”命令查看用户的信息,并使用$?判断这条命令是否执行成功,也就是判断该用户是否已经存在。需要多说一句,/dev/null 是一个被称作 Linux 黑洞的文件,把输出信息重定向到这个文件等同于删除数据(类似于没有回收功能的垃圾箱),可以让用户的屏幕窗口保持简洁。

#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho "Already exists"elseuseradd $UNAME &> /dev/nullecho "$PASSWD" | passwd --stdin $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho  "$UNAME,Create success"elseecho "$UNAME,Create failure"fifi
done

执行批量创建用户的 Shell 脚本 Example.sh,在输入为账户设定的密码后将由脚本自动检查并创建这些账户。由于已经将多余的信息通过输出重定向符转移到了/dev/null 黑洞文件中,因此在正常情况下屏幕窗口除了“用户账户创建成功”(Create success)的提示后不会有其他内容。在 Linux 系统中,/etc/passwd 是用来保存用户账户信息的文件。如果想确认这个脚本是否成功创建了用户账户,可以打开这个文件,看其中是否有这些新创建的用户信息。

[root@localhost ch4]# sh Example.sh 
Enter The Users Password : 1111111
andy,Create success
barry,Create success
carl,Create success
duke,Create success
eric,Create success
george,Create success
[root@localhost ch4]# tail -6 /etc/passwd
andy:x:504:506::/home/andy:/bin/bash
barry:x:505:507::/home/barry:/bin/bash
carl:x:506:508::/home/carl:/bin/bash
duke:x:507:509::/home/duke:/bin/bash
eric:x:508:510::/home/eric:/bin/bash
george:x:509:511::/home/george:/bin/bash

参照上面的例子,批量删除用户的bash 脚本

#!/bin/bash
for UNAME in `cat users.txt`
do
id $UNAME &> /dev/nullif [ $? -eq 0 ]thenuserdel $UNAME &> /dev/nullif [ $? -eq 0 ]thenecho  "delete $UNAME success"elseecho "delete  failure"fielseecho "$UNAME is\'t not exists"fi
done
~

您还记得在学习双分支 if 条件语句时,用到的那个测试主机是否在线的脚本么?既然我们现在已经掌握了 for 循环语句,不妨做些更酷的事情,比如尝试让脚本从文本中自动读取主机列表,然后自动逐个测试这些主机是否在线。
首先创建一个主机列表文件 ipadds.txt:

[root@localhost ch4]# cat ipadds.txt 
192.168.1.1
192.168.1.2
www.baidu.com
www.sina.com
www.163.com
www.aaa.com

       

       然后前面的双分支 if 条件语句与 for 循环语句相结合,让脚本从主机列表文件 ipadds.txt中自动读取 IP 地址(用来表示主机)并将其赋值给 HLIST 变量,从而通过判断 ping 命令执行后的返回值来逐个测试主机是否在线。脚本中出现的$(命令)是一种完全类似于第 3 章的转义字符中反引号`命令`的 Shell 操作符,效果同样是执行括号或双引号括起来的字符串中的命令。大家在编写脚本时,多学习几种类似的新方法,可在工作中大显身手:

#!/bin/bash
HLIST=$(cat ./ipadds.txt)
for IP in $HLIST
doping -c 3 -i 0.2 -W 3 $IP &> /dev/nullif [ $? -eq 0 ]; thenecho "Host $IP is On-line."elseecho "Host $IP is Off-line."fi
done[root@localhost ch4]# sh CheckHosts.sh 
Host 192.168.1.1 is On-line.
Host 192.168.1.2 is Off-line.
Host www.baidu.com is On-line.
Host www.sina.com is On-line.
Host www.163.com is On-line.
Host www.aaa.com is Off-line.

 

这篇关于bash代码 验证某台主机是否在线,建用户账户并设置密码,删除账户的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896552

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能