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

相关文章

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网