shell脚本100 例(下) shell 脚本知识点,学习、进修、面试、居家旅行必备精品.--潜心研究必有所成

  1. 查找 Linux 系统中的僵尸进程
#!/bin/bash
#awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令
ps aux |awk '{if($8 == "Z"){print $2,$11}}'
  1. 提示用户输入年份后测试判断是否为闰年
#!/bin/bash
#能被 4 整除并且并 100 整除的年是闰年
#能被 400 整除的年也是闰年
read -p "请输入一个年份:" year
if [ "$year" = "" ];then
 	echo "没有输入年份"
 	exit
fi
#使用正则测试变量 year 中是否包含大小写字母
if [[ "$year" =~ [a-Z] ]];then
 	echo "你输入的不是数字"
 	exit
fi
if [ $[year % 4] -eq 0 ] && [ $[year % 100] -ne 0 ];then
 	echo "$year 是闰年"
elif [ $[year % 400] -eq 0 ];then
 	echo "$year 是闰年"
else
 	echo "$year 不是闰年"
fi
  1. 生成随机密码(urandom 版本)
#!/bin/bash
#/dev/urandom 文件是 Linux 内置的随机设备文件
#cat /dev/urandom 可以看看里面的内容,ctrl+c 退出查看
#查看该文件内容后,发现内容有些太随机,包括很多特殊符号,我们需要的密码不希望使用这些符号
#tr -dc '_A-Za-z0-9' </dev/urandom
#该命令可以将随机文件中其他的字符删除,仅保留大小写字母,数字,下划线,但是内容还是太多
#我们可以继续将优化好的内容通过管道传递给 head 命令,在大量数据中仅显示头 10 个字节
#注意 A 前面有个下划线
tr -dc '_A-Za-z0-9' </dev/urandom | head -c 10
  1. 生成随机密码(子串截取版本)
#!/bin/bash

#设置变量 key,存储密码的所有可能性(密码库),如果还需要其他字符请自行添加其他密码字符
#使用$#统计密码库的长度
key="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
num=${
   #key}
#设置初始密码为空
pass=''
#循环 8 次,生成 8 为随机密码
#每次都是随机数对密码库的长度取余,确保提取的密码字符不超过密码库的长度
#每次循环提取一位随机密码,并将该随机密码追加到 pass 变量的最后
for i in {
   1..8}
do
	index=$[RANDOM%num]
	pass=$pass${
   key:$index:1}
done
echo $pass
  1. 生成随机密码(UUID 版本,16 进制密码)
#!/bin/bash
uuidgen
  1. 生成随机密码(进程 ID 版本,数字密码)
#!/bin/bash
echo $$
  1. 测试用户名与密码是否正确
#!/bin/bash
#用户名为 tom 并且密码为 123456,则提示登录成功,否则提示登录失败
read -p "请输入用户名:" user
read -p "请输入密码:" pass
if [ "$user" == 'tom' -a "$pass" == '123456' ];then
	echo "Login successful"
else
	echo "Login Failed"
fi
  1. 循环测试用户名与密码是否正确
#!/bin/bash
#循环测试用户的账户名和密码,最大测试 3 次,输入正确提示登录成功,否则提示登录失败
#用户名为 tom 并且密码为 123456
for i in {
   1..3}
do
	read -p "请输入用户名:" user
	read -p "请输入密码:" pass
	if [ "$user" == 'tom' -a "$pass" == '123456' ];then
 		echo "Login successful"
 		exit
	fi
done
	echo "Login Failed"
  1. Shell 脚本的 fork 炸弹
#!/bin/bash
#快速消耗计算机资源,致使计算机死机
#定义函数名为.(点), 函数中递归调用自己并放入后台执行

.() {
    .|.& };.
  1. 批量下载有序文件(pdf、图片、视频等等)
#!/bin/bash
#本脚本准备有序的网络资料进行批量下载操作(如 01.jpg,02.jpg,03.jpg)
#设置资源来源的域名连接
url="http://www.test.com/"
echo "开始下载…"
sleep 2
type=jpg
for i in `seq 100`
 	echo "正在下载$i.$type"
curl $url/$i.$type -o /tmp/${
   i}$type
 	sleep 1
done
#curl 使用-o 选项指定下载文件另存到哪里.
  1. 显示当前计算机中所有账户的用户名称

```powershell
#!/bin/bash
#下面使用 3 中不同的方式列出计算机中所有账户的用户名
#指定以:为分隔符,打印/etc/passwd 文件的第 1 列
awk -F: '{print $1}' /etc/passwd
#指定以:为分隔符,打印/etc/passwd 文件的第 1 列
cut -d: -f1 /etc/passwd
#使用 sed 的替换功能,将/etc/passwd 文件中:后面的所有内容替换为空(仅显示用户名)
sed 's/:.*//' /etc/passwd

62. 制定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录

```powershell
#!/bin/bash
[ ! -d /data ] && mkdir /data
[ -z $1 ] && exit
if [ -d $1 ];then
tar -czf /data/$1.-`date +%Y%m%d`.tar.gz $1
else
 echo "该目录不存在"
fi
  1. 显示进度条(回旋镖版)
#!/bin/bash
#Author:丁丁历险(Jacob)
while :
do
	clear
	for i in {
   1..20}
	do
		echo -e "\033[3;${i}H*"
		sleep 0.1
	done
	clear
	for i in {
   20..1}
	do
		echo -e "\033[3;${i}H*"
		sleep 0.1
	done
	clear
done
  1. 安装 LAMP 环境(yum 版本)
#!/bin/bash
#本脚本适用于 RHEL7(RHEL6 中数据库为 mysql)
yum makecache &>/dev/null
num=$(yum repolist |awk '/repolist/{print $2}' |sed 's/,//')
if [ $num -lt 0 ];then
	yum -y install httpd
	yum -y install mariadb mariadb-server mariadb-devel
	yum -y install php php
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值