开箱即用的shell脚本(一)

news2024/11/15 17:21:02

目录

一、通过位置变量创建 Linux 系统账户及密码

 二、初始化脚本

三、nginx启动脚本

四、每周 5 使用 tar 命令备份/var/log 下的所有日志文件

五、实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员

六、脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

七、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)

八、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用 UID 数字对比版本)

九、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

十、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)

十一、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while 版本)

十二、创建多个用户

​十三、删除多个有规律的用户

​十四、九九乘法表

 十五、剪子包袱锤

 十六、猜大小

 十七、关于$*与$@的验证

​编辑 十八、使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

十九、现有学生成绩与对应等级:0~60:D、61~80 C、81~90 B、91~100 A,编写脚本实现当输入范围区间内的数字时打印出对应的等级,输入其他字符时提示“请输入正确数字”并退出脚本?


一、通过位置变量创建 Linux 系统账户及密码

vim  useradd.sh

#!/bin/bash
#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
useradd "$1"
echo "$2" | passwd --stdin "$1"    

                      

 二、初始化脚本

#!/bin/bash
#init(初始化) environment(环境)

#firewalld configure
fw(){
    systemctl status firewalld  >> /dev/zero
    if [ $? -ne 0 ];then
        echo "Firewalld is disabled!"
    else
        systemctl stop firewalld
        sleep 3
        echo "Firewalld stop successful!"
    fi
}
#network configure
net(){
    nic=`ifconfig | awk -F : 'NR==1{print $1}'`
    systemctl status NetworkManager > /dev/zero
    if [ $? -ne 0 ];then
        echo "NetworkManager is disabled!"
    else
        systemctl stop NetworkManager
        sleep 3
        echo "NetworkManager stop successful!"
    fi
    cat << eof > /etc/sysconfig/network-scripts/ifcfg-$nic
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=$nic
    DEVICE=$nic
    ONBOOT=yes
    IPADDR=192.168.100.1
    PREFIX=24
    GATEWAY=192.168.100.254
    DNS1=192.168.100.254
eof
    systemctl restart network > /dev/zero
    sleep 2
    echo "IP address be OK!"
}
#selinux configure
se(){
    text=`awk -F = '/SELINUX=e/{print $2}' /etc/selinux/config`
    if [ -z $text ];then
        echo "selinux is disable"
    else
        sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
        sleep 2
        echo "selinux is OK!"
    fi
}

#yum configure
yum(){
    yumPath="/etc/yum.repos.d"
    if ! [ -d $yumPath/backup ];then
        mkdir $yumPath/backup
        mv $yumPath/CentOS-* $yumPath/backup
        cat << e > $yumPath/local.repo
        [local]
        name=local
        baseurl=file:///mnt
        enabled=1
        gpgcheck=0
e
        umount /mnt
        mount /dev/sr0 /mnt > /dev/zero
        sleep 2
        echo "yum configure is OK!"
    else
        echo "$yumPath/backup is existed!"
    fi
}
#kernel configure
kernel(){
    ktext=`grep "net.ipv4.ip_forward" /etc/sysctl.conf`
    if ! [ -z $ktext ];then
        echo "route be config!"
    else
        echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
        sysctl -p  >> /dev/zero
        sleep 2
        echo "route is OK"
    fi
}

#configing
fw
net
se
yum
kernel

三、nginx启动脚本

#!/bin/bash
nginx_cmd="/usr/local/nginx/sbin/nginx"
two=$2
start(){
     if [ -z $two ];then
                $nginx_cmd -c /usr/local/nginx/conf/nginx.conf
        else
                $nginx_cmd -c $two
        fi
}
stop(){
    if [ -z $two ];then
        $nginx_cmd -s stop -c /usr/local/nginx/conf/nginx.conf
    else
        $nginx_cmd -s stop -c $two
    fi
}
case $1 in
start)
    start
;;
stop)
    stop
;;
reload)
    if [ -z $2 ];then
        $nginx_cmd -s reload -c /usr/local/nginx/conf/nginx.conf
    else
        $nginx_cmd -s reload -c $2
    fi
;;
restart)
    stop
    start
;;    
*)
    echo 'USEAGE: $1:start|stop|reload;$2:/usr/loca/nginx/conf/nginx.conf(default) OR other configure path!'
;;
esac

#注意:此脚本为编译安装nginx之后的脚本

四、每周 5 使用 tar 命令备份/var/log 下的所有日志文件

#vim  /root/logbak.sh
#编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
#注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面
tar    -czf    log-`date +%Y%m%d`.tar.gz    /var/log
# crontab ‐e                             #编写计划任务,执行备份脚本
00    03    *    *    5      /root/logbak.sh

五、实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员

#!/bin/bash
memFree=`free-m | awk 'NR==2{print $4}'`     #memory  内存
diskFree=`df -m | awk '/\//{print $4}'`
while true
do
if [ $memFree -lt 500 ] || [ $diskFree -lt 1000 ];then
        echo "memory or disk is not enough! please check the mail for root!"
        mail -s warning root << e
        SOS
e
fi
done

六、脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。

#!/bin/bash
#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数
#使用取余算法将随机数变为 1‐100 的随机数
num=$[RANDOM%100+1]
#使用 read 提示用户猜数字
#使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),‐lt(小于),‐le(小
于等于)
while  :
do
      read ‐p  "计算机生成了一个 1‐100 的随机数,你猜: "  cai
      if   [  $cai  ‐eq   $num  ];then
             echo   "恭喜,猜对了"
             exit
      elif  [  $cai   ‐gt   $num  ];then
             echo   "Oops,猜大了"
      else
             echo   "Oops,猜小了"
      fi
done

七、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)

#!/bin/bash
if  [  $USER  ==  "root"  ];then
         yum  ‐y  install   vsftpd
else
        echo "您不是管理员,没有权限安装软件"
fi

八、检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用 UID 数字对比版本)

#!/bin/bash
if  [  $UID  ‐eq  0  ];then
         yum  ‐y  install   vsftpd
else
        echo "您不是管理员,没有权限安装软件"
fi

九、编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

#!/bin/bash
read -p "Please input username:" un
read -p "please input password:" up
if [ -z $un ];then
        echo "Please input username!"
        exit
else
        if [ -z $up ];then
                useradd $un
                echo "123456" | passwd --stdin $un   >> /dev/zero
                echo "Your username is $un,Your password is 123456"
        else
                useradd $un
                echo $up | passwd --stdin $un  >> /dev/zero
                echo "Your username is $un,Your password is $up"
        fi
fi

十、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(for 版本)

#!/bin/bash
for i in `seq 1 254`
do
        ping -c 3 -w 1 192.168.4.$i >> /dev/zero
        if [ $? -eq 0 ];then
                echo "192.168.4.$i is up"  >> /opt/up.txt
        else
                echo "192.168.4.$i is down" >> /opt/down.txt
        fi
done

十一、编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态(while 版本)

#!/bin/bash
i=1
while  [  $i  ‐le  254 ]
do
          ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i  &>/dev/null
         if  [ $? –eq 0 ];then
               echo "192.168.4.$i is up"
         else
               echo  "192.168.4.$i is down"
         fi
         let i++
done

十二、创建多个用户

vim    for.sh

 

十三、删除多个有规律的用户

vim   user_del.sh

十四、九九乘法表

方法一:

 方法二:

#`-e`:启用转义字符,如`\n`表示换行符、`\t`表示制表符等。

#`-n`:不输出末尾的换行符。

 结果:

 #注意:外层循环控制行,里层循环控制列

 十五、剪子包袱锤

 十六、猜大小

结果:

 十七、关于$*与$@的验证

十八、使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码

#!/bin/bash
#本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息
for  i  in  `cat  user.txt`
do
         useradd  $i
         echo "123456" | passwd ‐‐stdin $i
done

十九、现有学生成绩与对应等级:0~60:D、61~80 C、81~90 B、91~100 A,编写脚本实现当输入范围区间内的数字时打印出对应的等级,输入其他字符时提示“请输入正确数字”并退出脚本?

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/659100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言之动态内存分配(1)

目录 本章重点 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 几个经典的笔试题 柔性数组 动态内存管理—自己维护自己的内存空间的大小 首先我们申请一个变量&#xff0c;再申请一个数组 这是我们目前知道的向内存申请…

【小沐学Python】Python实现Web服务器(Flask,gevent )

文章目录 1、简介1.1 功能列表1.2 支持平台1.3 安装 2、gevent入门示例2.1 文件IO2.2 MySQL2.3 redis2.4 time2.5 requests2.6 socket2.7 并发抓取文字2.8 并发抓取图片2.9 生产者 - 消费者 3、gevent其他示例3.1 StreamServer3.2 WSGI server3.3 flask3.4 websocket3.5 udp 结…

LeetCode 1254. 统计封闭岛屿的数目

【LetMeFly】1254.统计封闭岛屿的数目 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-closed-islands/ 二维矩阵 grid 由 0 &#xff08;土地&#xff09;和 1 &#xff08;水&#xff09;组成。岛是由最大的4个方向连通的 0 组成的群&#xff0c;封闭岛是…

Spark-核心常见面试题集锦(RDD、shuffle类型、数据倾斜优化、小文件问题、性能调优、streaming流程、checkpoint机制)

1 Spark的任务执行流程 第一种standalone模式 整体&#xff1a;driver中有sparkcontext&#xff0c;RDD DAG和DAGScheduler和taskscheduler&#xff0c;master是资源管理&#xff0c;worker中executor&#xff0c;executor中有多个task 构建一个application环境&#xff0c;d…

在线查看EventBus源代码

github&#xff1a;/src/org/greenrobot/eventbus/ 例如&#xff1a;EventBus.java

【LeetCode】HOT 100(15)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

024.【链表算法】

1. 创建单向链表 例如&#xff0c;有“学生”这样一个链表&#xff0c;链表中需要包括学生的姓名、性别、学号等一些基本信息。创建这样的一个链表&#xff0c;链表里面包括多个学生的信息。 可以看出&#xff0c;“学生一”的尾结点“next”指向了下一个“学生二”的头结点学…

【并发编程】创建线程的三种方法

源码 Runnable 函数式接口 package java.lang; FunctionalInterface public interface Runnable { public abstract void run(); }Thread 就是一个典型的静态代理模式 public class Thread implements Runnable {private Runnable target;public Thread() { in…

接口测试用例如何编写?

目录 前言&#xff1a; 在开始编写接口测试用例之前&#xff0c;需要注意几件事&#xff1a; 编写接口测试用例的步骤包括&#xff1a; 常遇到的问题包括&#xff1a; 前言&#xff1a; 编写接口测试用例是接口测试的重要一环。好的接口测试用例能够充分覆盖接口各种情况&…

jmeter负载测试中如何找到最大并发用户数(实战)

目录 前言 负载测试概念 脚本总体设计&#xff1a; 场景介绍&#xff1a; 前言 在进行负载测试时&#xff0c;找到最大并发用户数是非常重要的&#xff0c;这个值将会告诉您系统可以承受多大的并发请求。 在性能测试中&#xff0c;当我们接到项目任务时&#xff0c;很多时…

热烈Matplotlib子图不不会画来看看-分图绘制(怒肝万字)

&#x1f468;&#x1f3fb;‍&#x1f393;博主介绍&#xff1a;大家好&#xff0c;我是大锤爱编程的博客_CSDN博客-大数据,Go,数据分析领域博主&#xff0c;有五年的数据开开发&#xff0c;有着丰富的数仓搭建、数据分析经验。我会在我的系列文章里面分享我学到的知识&#x…

计算机服务器中了encrypted勒索病毒怎么办,什么是encrypted勒索病毒

Encrypted勒索病毒是一种非常危险的电脑病毒&#xff0c;该病毒通过加密计算机中的文件和数据&#xff0c;使其无法访问和使用计算机&#xff0c;并要求受害者支付一定的赎金以获得解密密钥。 Encrypted勒索病毒是一种常见的勒索软件&#xff0c;由于它使用先进的加密技术&…

ansible的部署和模块

一、 ansible 的概述 1、ansible简介 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成&#xff0c;类似于saltstack和Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 …

【OpenCV DNN】Flask 视频监控目标检测教程 09

欢迎关注『OpenCV DNN Youcans』系列&#xff0c;持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 09 3.9 OpenCVFlask多线程处理实时监控人脸识别新建 Flask 项目 cvFlask09Python程序文件视频流的网页模板程序运行 本系列从零开始&#xff0c;详细讲解使用 Flask 框架…

Windows版Redis安装

最近电脑重装了系统&#xff0c;很多常用的软件、应用都没有了&#xff0c;所以需要重新装&#xff0c;所以想借此机会把一些安装比较复杂的应用的安装过程&#xff0c;重新记录一下&#xff0c;方便后续&#xff0c; 安装 Redis默认只有Linux的版本&#xff0c;但是微软为了更…

Python面向对象编程1-面向过程的简单纸牌游戏程序 项目1.4 打印牌的点数和花色

总项目目标&#xff1a;用面向过程思想设计一个简单的纸牌游戏程序&#xff0c;称为"Higher or Lower"&#xff08;高还是低&#xff09;。游戏中&#xff0c;玩家需要猜测接下来的一张牌是比当前牌高还是低。根据猜测的准确性&#xff0c;玩家可以得到或失去相应的积…

容器(第九篇)ansible-playbook

Ansible 的脚本 --- playbook 剧本 playbooks 本身由以下各部分组成 &#xff08;1&#xff09;Tasks&#xff1a;任务&#xff0c;即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 &#xff08;2&#xff09;Variables&#xff1a;变量 &#xff08;3&…

pytorch搭建LeNet网络实现图像分类器

pytorch搭建LeNet网络实现图像分类器 一、定义LeNet网络模型1&#xff0c;卷积 Conv2d2&#xff0c;池化 MaxPool2d3&#xff0c;Tensor的展平&#xff1a;view()4&#xff0c;全连接 Linear5&#xff0c;代码&#xff1a;定义 LeNet 网络模型 二、训练并保存网络参数1&#xf…

GAMES101笔记 Lecture03 Transformation

目录 Transoformation(变换)Why stuty transformation(为什么要学习变换呢?)2D transformations(2D变换)Scale transformation(缩放变换)Reflection Matrix(反射矩阵)Shear Matrix(切变矩阵) Rotate transformation(旋转变换)Linear Transforms Matrices(线性变换 矩阵) Hom…

Java泛型详解,史上最全图文详解

泛型在java中有很重要的地位&#xff0c;无论是开源框架还是JDK源码都能看到它。 毫不夸张的说&#xff0c;泛型是通用设计上必不可少的元素&#xff0c;所以真正理解与正确使用泛型&#xff0c;是一门必修课。 一&#xff1a;泛型本质 Java 泛型&#xff08;generics&#…