Shell 脚本 100 例《六》

51. 查找 Linux 系统中的僵尸进程
#!/bin/bash
#awk 判断 ps 命令输出的第 8 列为 Z 是,显示该进程的 PID 和进程命令
ps aux |awk '{if($8 == "Z"){print $2,$11}}'
 
52. 提示用户输入年份后测试判断是否为闰年
#!/bin/bash
#Author:丁丁历险(Jacob)
#能被 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
 
53. 生成随机密码(urandom 版本)
#!/bin/bash
#Author:丁丁历险(Jacob)
#/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
 
 
54. 生成随机密码(字串截取版本)
#!/bin/bash
#Author:丁丁历险(Jacob)
#设置变量 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

55. 生成随机密码(UUID 版本,16 进制密码)
#!/bin/bash
uuidgen
 
56. 生成随机密码(进程 ID 版本,数字密码)
#!/bin/bash
echo $$
 
57. 测试用户名与密码是否正确
#!/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
 
58. 循环测试用户名与密码是否正确
#!/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"
 
59. Shell 脚本的 fork 炸弹
#!/bin/bash
#快速消耗计算机资源,致使计算机死机
#定义函数名为.(点), 函数中递归调用自己并放入后台执行
.() { .|.& };.

60. 批量下载有序文件(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 选项指定下载文件另存到哪里.

转载于:https://my.oschina.net/szwangsen/blog/1612708

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值