
shell脚本
梦见憨憨丽吖
这个作者很懒,什么都没留下…
展开
-
使用 awk 编写的 wc 程序
使用 awk 编写的 wc 程序#!/bin/bash#自定义变量 chars 变量存储字符个数,自定义变量 words 变量存储单词个数#awk 内置变量 NR 存储行数#length()为 awk 内置函数,用来统计每行的字符数量,因为每行都会有一个隐藏的$,所以每次统计后都+1 #wc 程序会把文件结尾符$也统计在内,可以使用 cat -A 文件名,查看该隐藏字符awk '{cha...原创 2020-04-14 08:20:08 · 245 阅读 · 0 评论 -
生成自签名私钥和证书
生成自签名私钥和证书#!/bin/bashread -p "请输入存放证书的目录:" dirif [ ! -d $dir ];thenecho "该目录不存在"exitfiread -p "请输入密钥名称:" name#使用 openssl 生成私钥openssl genrsa -out ${dir}/${name}.key#使用 openssl 生成证书#subj 选项可以...原创 2020-04-14 08:19:35 · 402 阅读 · 0 评论 -
统计双色球各个数字的中奖概率
统计双色球各个数字的中奖概率#!/bin/bash#往期双色球中奖号码如下: #01 04 11 28 31 32 16#04 07 08 18 23 24 02#02 05 06 16 28 29 04#04 19 22 27 30 33 01#05 10 18 19 30 31 03#02 06 11 12 19 29 06#统计篮球和红球数据出现的概率次数(篮球不分顺序,统计...原创 2020-04-14 08:18:39 · 4444 阅读 · 1 评论 -
使用 egrep 过滤 MAC 地址
使用 egrep 过滤 MAC 地址#!/bin/bash#MAC 地址由 16 进制组成,如 AA:BB:CC:DD:EE:FF#[0-9a-fA-F]{2}表示一段十六进制数值,{5}表示连续出现 5 组前置:的十六进制egrep "[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}" $1...原创 2020-04-14 08:17:52 · 209 阅读 · 0 评论 -
打印各种时间格式
打印各种时间格式#!/bin/bashecho "显示星期简称(如:Sun)"date +%aecho "显示星期全称(如:Sunday)"date +%Aecho "显示月份简称(如:Jan)"date +%becho "显示月份全称(如:January)"date +%Becho "显示数字月份(如:12)"date +%mecho "显示数字日期(如:01 号)"d...原创 2020-04-14 08:11:04 · 535 阅读 · 0 评论 -
判断文件或目录是否存在
判断文件或目录是否存在#!/bin/bashif [ $# -eq 0 ] ;thenecho "未输入任何参数,请输入参数"echo "用法:$0 [文件名|目录名]"fiif [ -f $1 ];thenecho "该文件,存在"ls -l $1elseecho "没有该文件"fiif [ -d $1 ];then echo "该目录,存在" ls -ld $2e...原创 2020-04-13 08:17:12 · 201 阅读 · 0 评论 -
读取用户输入的账户名称,将账户名写入到数组保存
读取用户输入的账户名称,将账户名写入到数组保存#!/bin/bash#定义数组名称为 name,数组的下标为 i,小标从 0 开始,每输入一个账户名,下标加 1,继续存下一个账户#最后,输入 over,脚本输出总结性信息后脚本退出i=0while :doread -p "请输入账户名,输入 over 结束:" keyif [ $key == "over" ];thenbreak...原创 2020-04-13 08:16:26 · 1013 阅读 · 0 评论 -
根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动
根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动#!/bin/bash#00-12 点为早晨,12-18 点为下午,18-24 点为晚上#使用 date 命令获取时间后,if 判断时间的区间,确定问候语内容tm=$(date +%H)if [ $tm -le 12 ];thenmsg="Good Morning $USER"elif [ $tm -gt 12 -a $tm ...原创 2020-04-13 08:15:46 · 563 阅读 · 0 评论 -
使用 shell 脚本打印如下图形
使用 shell 脚本打印如下图形:#!/bin/bash#打印第一组图片#for(())为类 C 语言的语法格式,也可以使用 for i in;do ;done 的格式替换#for((i=1;i<=9;i++))循环会执行 9 次,i 从 1 开始到 9,每循环一次 i 自加 1clearfor (( i=1; i<=9; i++ ))do for (( j=1; ...原创 2020-04-13 08:15:02 · 2708 阅读 · 0 评论 -
查看所有虚拟机磁盘使用量以及 CPU 使用量信息
查看所有虚拟机磁盘使用量以及 CPU 使用量信息#!/bin/bashvirt-dfread -n1 "按任意键继续" keyvirt-top原创 2020-04-13 08:12:05 · 2171 阅读 · 0 评论 -
关闭 SELinux
关闭 SELinux#!/bin/bashsed -i '/^SELINUX/s/=.*/=disabled/' /etc/selinux/configsetenforce 0原创 2020-04-13 08:11:35 · 349 阅读 · 0 评论 -
一键配置 VNC 远程桌面服务器(无密码版本)
一键配置 VNC 远程桌面服务器(无密码版本):#!/bin/bash#脚本配置的 VNC 服务器,客户端无需密码即可连接#客户端仅有查看远程桌面的权限,没有鼠标和键盘的操作权限rpm --quiet -q tigervnc-serverif [ $? -ne 0 ];then yum -y tigervnc-serverfix0vncserver AcceptKeyEvents=...原创 2020-04-13 08:10:41 · 3324 阅读 · 0 评论 -
一键部署 memcached
一键部署 memcached#!/bin/bash#脚本用来源码安装 memcached 服务器#注意:如果软件的下载链接过期了,请更新 memcached 的下载链接wget http://www.memcached.org/files/memcached-1.5.1.tar.gzyum -y install gcctar -xf memcached-1.5.1.tar.gzcd ...原创 2020-04-13 08:09:58 · 102 阅读 · 0 评论 -
Shell 脚本对信号的处理,执行脚本后,按键盘 Ctrl+C 无法终止的脚本
Shell 脚本对信号的处理,执行脚本后,按键盘 Ctrl+C 无法终止的脚本#!/bin/bash#使用 trap 命令可以拦截用户通过键盘或 kill 命令发送过来的信号#使用 kill -l 可以查看 Linux 系统中所有的信号列表,其中 2 代表 Ctrl+C#trap 当发现有用户 ctrl+C 希望终端脚本时,就执行 echo "暂停 10s";sleep 10 这两条命令...原创 2020-04-13 08:09:11 · 2278 阅读 · 0 评论 -
不登陆虚拟机,修改虚拟机网卡 IP 地址
不登陆虚拟机,修改虚拟机网卡 IP 地址#!/bin/bash#该脚本使用 guestmount 工具,Centos7.2 中安装 libguestfs-tools-c 可以获得 guestmount 工具#脚本在不登陆虚拟机的情况下,修改虚拟机的 IP 地址信息#在某些环境下,虚拟机没有 IP 或 IP 地址与真实主机不在一个网段#真实主机在没有 virt-manger 图形的情况下,...原创 2020-04-13 08:07:56 · 480 阅读 · 0 评论 -
查看 KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机)
查看 KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机)#!/bin/bash#该脚本使用 guestmount 工具,可以将虚拟机的磁盘系统挂载到真实机文件系统中#Centos7.2 中安装 libguestfs-tools-c 可以获得 guestmount 工具#虚拟机可以启动或者不启动都不影响该脚本的使用#将虚拟机磁盘文件挂载到文件系统后,就可以直接读取磁盘文件中的网卡配置...原创 2020-04-10 09:52:07 · 1955 阅读 · 0 评论 -
调整虚拟机内存参数的 shell 脚本
调整虚拟机内存参数的 shell 脚本#!/bin/bash#脚本通过调用 virsh 命令实现对虚拟机的管理,如果没有该命令,需要安装 libvirt-client 软件包cat << EOF1.调整虚拟机最大内存数值2.调整实际分配给虚拟机的内存数值EOFread -p "请选择[1-2]:" selectcase $select in1)read -p "请输...原创 2020-04-10 09:51:16 · 379 阅读 · 0 评论 -
使用脚本开启关闭虚拟机
使用脚本开启关闭虚拟机#!/bin/bash#脚本通过调用 virsh 命令实现对虚拟机的管理,如果没有该命令,需要安装 libvirt-client 软件包#$1 是脚本的第 1 个参数,$2 是脚本的第 2 个参数#第 1 个参数是你希望对虚拟机进行的操作指令,第 2 个参数是虚拟机名称case $1 inlist)virsh list --all;;start)virsh...原创 2020-04-10 09:49:53 · 895 阅读 · 0 评论 -
将 Linux 系统中 UID 大于等于 1000 的普通用户都删除
将 Linux 系统中 UID 大于等于 1000 的普通用户都删除#!/bin/bash#先用 awk 提取所有 uid 大于等于 1000 的普通用户名称#再使用 for 循环逐个将每个用户删除即可user=$(awk -F: '$3>=1000{print $1}' /etc/passwd)for i in $userdo userdel -r $idone小常提醒...原创 2020-04-10 09:48:48 · 4791 阅读 · 0 评论 -
显示本机 Linux 系统上所有开放的端口列表
显示本机 Linux 系统上所有开放的端口列表#!/bin/bash#从端口列表中观测有没有没用的端口,有的话可以将该端口对应的服务关闭,防止意外的攻击可能性ss -nutlp |awk '{print $1,$5}' |awk -F"[: ]" '{print "协议:"$1,"端口号:"$NF}' |grep "[0-9]" |uniq...原创 2020-04-10 09:47:31 · 302 阅读 · 0 评论 -
判断用户输入的是 Yes 或 NO
判断用户输入的是 Yes 或 NO#!/bin/bashread -p "Are you sure?[y/n]:" surecase $sure iny|Y|Yes|YES) echo "you enter $a";;n|N|NO|no)echo "you enter $a";;*)echo "error";;esac原创 2020-04-10 09:45:46 · 1029 阅读 · 0 评论 -
打印斐波那契数列
打印斐波那契数列(该数列的特点是后一个数字,永远都是前 2 个数字之和)#!/bin/bash#斐波那契数列后一个数字永远是前 2 个数字之和#如:0 1 1 2 3 5 8 13 … …list=(0 1)for i in `seq 2 11`dolist[$i]=`expr ${list[-1]} + ${list[-2]}`doneecho ${list[@]}...原创 2020-04-10 09:42:43 · 249 阅读 · 0 评论 -
判断用户输入的数据类型
判断用户输入的数据类型(字母、数字或其他)#!/bin/bashread -p "请输入一个字符:" KEYcase "$KEY" in[a-z]|[A-Z])echo "字母" ;;[0-9])echo "数字" ;;*)echo "空格、功能键或其他控制字符"esac...原创 2020-04-10 09:40:22 · 1092 阅读 · 0 评论 -
从键盘读取一个论坛积分,判断论坛用户等级
从键盘读取一个论坛积分,判断论坛用户等级#!/bin/bash#等级分类如下: # 大于等于 90 神功绝世# 大于等于 80,小于 90 登峰造极# 大于等于 70,小于 80 炉火纯青# 大于等于 60,小于 70 略有小成# 小于 60 初学乍练read -p "请输入积分(0-100):" JFif [ $JF -ge 90 ] ; then echo "$JF 分,神功...原创 2020-04-10 09:35:06 · 323 阅读 · 0 评论 -
统计/etc/passwd 中 root 出现的次数
统计/etc/passwd 中 root 出现的次数#!/bin/bash#每读取一行文件内容,即从第 1 列循环到最后 1 列,依次判断是否包含 root 关键词,如果包含则 x++awk -F: '{i=1;while(i<=NF){if($i~/root/){x++};i++}} END{print "root 出现次数为"x}' /etc/passwd...原创 2020-04-10 09:24:24 · 1252 阅读 · 0 评论 -
找出/etc/passwd 中能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理
找出/etc/passwd 中能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理#!/bin/bashuser=$(awk -F: '/bash$/{print $1}' /etc/passwd)for i in $userdoawk -F: -v x=$i '$1==x{print $1,$2}' /etc/shadowdone...原创 2020-04-09 08:49:37 · 907 阅读 · 0 评论 -
使用脚本循环创建三位数字的文本文件(111-999 的文件)
使用脚本循环创建三位数字的文本文件(111-999 的文件)#!/bin/bashfor i in {1..9}dofor j in {1..9}dofor k in {1..9}dotouch /tmp/$i$j$k.txtdonedonedone原创 2020-04-09 08:49:04 · 674 阅读 · 0 评论 -
自动修改计划任务配置文件
自动修改计划任务配置文件#!/bin/bashread -p "请输入分钟信息(00-59):" minread -p "请输入小时信息(00-24):" hourread -p "请输入日期信息(01-31):" dateread -p "请输入月份信息(01-12):" monthread -p "请输入星期信息(00-06):" weakread -p "请输入计划任务需要执行...原创 2020-04-09 08:48:26 · 552 阅读 · 0 评论 -
设置 Python 支持自动命令补齐功能
设置 Python 支持自动命令补齐功能#!/bin/bash#Summary:Enable tab complete for python#Description:# Needs import readline and rlcompleter module# import readline# import rlcompleter# help(rlcompleter) display...原创 2020-04-09 08:47:49 · 274 阅读 · 0 评论 -
修改 Linux 系统的最大打开文件数量
修改 Linux 系统的最大打开文件数量#!/bin/bash#往/etc/security/limits.conf 文件的末尾追加两行配置参数,修改最大打开文件数量为 65536cat >> /etc/security/limits.conf <<EOF* soft nofile 65536* hard nofile 65536EOF...原创 2020-04-09 08:46:39 · 155 阅读 · 0 评论 -
制定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录
制定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录#!/bin/bash[ ! -d /data ] && mkdir /data[ -z $1 ] && exitif [ -d $1 ];thentar -czf /data/$1.-`date +%Y%m%d`.tar.gz $1...原创 2020-04-09 08:44:53 · 681 阅读 · 0 评论 -
Shell 脚本的 fork 炸弹
Shell 脚本的 fork 炸弹#!/bin/bash#快速消耗计算机资源,致使计算机死机#定义函数名为.(点), 函数中递归调用自己并放入后台执行.() { .|.& };.原创 2020-04-09 08:44:09 · 226 阅读 · 0 评论 -
循环测试用户名与密码是否正确
循环测试用户名与密码是否正确#!/bin/bash#循环测试用户的账户名和密码,最大测试 3 次,输入正确提示登录成功,否则提示登录失败#用户名为 tom 并且密码为 123456for i in {1..3}doread -p "请输入用户名:" userread -p "请输入密码:" passif [ "$user" == 'tom' -a "$pass" == '12345...原创 2020-04-09 08:43:36 · 1450 阅读 · 0 评论 -
查找 Linux 系统中的僵尸进程
查找 Linux 系统中的僵尸进程#!/bin/bash#awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令ps aux |awk '{if($8 == "Z"){print $2,$11}}'原创 2020-04-09 08:41:52 · 219 阅读 · 0 评论 -
删除某个目录下大小为 0 的文件
删除某个目录下大小为 0 的文件#!/bin/bash#/var/www/html 为测试目录,脚本会清空该目录下所有 0 字节的文件dir="/var/www/html"find $dir -type f -size 0 -exec rm -rf {} \;...原创 2020-04-07 13:55:00 · 1421 阅读 · 0 评论 -
使用脚本自动创建逻辑卷
使用脚本自动创建逻辑卷#!/bin/bash#清屏,显示警告信息,创建将磁盘转换为逻辑卷会删除数据clearecho -e "\033[32m !!!!!!警告(Warning)!!!!!!\033[0m"echoecho "+++++++++++++++++++++++++++++++++++++++++++++++++"echo "脚本会将整个磁盘转换为 PV,并删除磁盘上所有数...原创 2020-04-07 13:54:26 · 157 阅读 · 0 评论 -
自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)
自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)#!/bin/bash#设置变量定义需要添加到防火墙规则的服务和端口号#使用 firewall-cmd --get-services 可以查看 firewall 支持哪些服务service="nfs http ssh"port="80 22 8080"#循环将每个服务添加到防火墙规则中for i in $servicedo...原创 2020-04-07 13:53:32 · 252 阅读 · 0 评论 -
检查特定的软件包是否已经安装
检查特定的软件包是否已经安装#!/bin/bashif [ $# -eq 0 ];thenecho "你需要制定一个软件包名称作为脚本参数"echo "用法:$0 软件包名称 ..."fi#$@提取所有的位置变量的值,相当于$*for package in "$@"doif rpm -q ${package} &>/dev/null ;thenecho -e "$...原创 2020-04-07 13:52:14 · 232 阅读 · 0 评论 -
备份 MySQL 的 shell 脚本(mysqldump 版本)
备份 MySQL 的 shell 脚本(mysqldump 版本)#!/bin/bash#定义变量 user(数据库用户名),passwd(数据库密码),date(备份的时间标签)#dbname(需要备份的数据库名称,根据实际需求需要修改该变量的值,默认备份 mysql 数据库)user=rootpasswd=123456dbname=mysqldate=$(date +%Y%m%d...原创 2020-04-07 13:51:26 · 284 阅读 · 0 评论 -
根据 md5 校验码,检测文件是否被修改
根据 md5 校验码,检测文件是否被修改#!/bin/bash#本示例脚本检测的是/etc 目录下所有的 conf 结尾的文件,根据实际情况,您可以修改为其他目录或文件#本脚本在目标数据没有被修改时执行一次,当怀疑数据被人篡改,再执行一次#将两次执行的结果做对比,MD5 码发生改变的文件,就是被人篡改的文件for i in $(ls /etc/*.conf)domd5sum "$i"...原创 2020-04-07 13:50:23 · 1499 阅读 · 0 评论