1、判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.”

#!/bin/bash
if [ `wc -l /etc/inittab | awk '{print $1}'` -gt 100 ] ;then
echo ”/etc/inittab is a big file.”
else
echo ”/etc/inittab is a small file.”
fi
2、给定一个用户,来判断这个用户是什么用户,如果是管理员用户,则显示“该用户为管理员”,否则显示“该用户为普通用户”

#!/bin/bash
if [ `whoami` == "root" ] ;then
echo "该用户为管理员"
else
echo "该用户为普通用户"
fi
3、判断某个文件是否存在
 
 
#!/bin/bash
if [ -e $1 ];then
echo "存在"
else
echo "不存在"
fi
 
4、判断当前系统上是否有用户的默认shell程序是否为bash程序,如果有,就显示有多个这类用户,否则就显示没有这类用户;【并且显示出那些用户是 bash】
 
#!/bin/bash
if [ ` grep "bash$" /etc/passwd |cat -n| awk '{print $1}'` -gt 0 ] ;then
echo `grep "bash$" /etc/passwd | awk -F ":" '{print $1}'`
else
echo "没有这类用户"
fi
 
5、写出一个脚本程序,给定一个文件,比如:/etc/inittab a、判断这个文件中是否有空白行? b、如果有,则显示其空白行的行号,否则显示没有空白行
 
#!/bin/bash
`awk '/^$/{print NR}' /etc/inittab`
if [ $? -gt 0 ];then
echo "有"
echo `awk '/^$/{print NR}' /etc/inittab`
else
echo "没有"
fi
    #!/bin/bash
# B=`grep -n "^[[:space:]]*$" /etc/inittab | wc -l`
C=`grep -n "^[[:space:]]*$" /root/abc | cut -d: -f1` if [ $B -eq 0 ] ; then
echo "没有空白行"
exit 1
else
echo "有空白行,空白行为 $C 行"
exit 0
fi
 
6、写一个脚本程序,给定一个用户,判断其UID与GID是否一样,如果一样,就显示该用户为“good guy”,否则显示为“bad guy”
 
 #!/bin/bash
 #
 for i in $(cat /etc/passwd);do  
  if [ `cut -d: -f3 $i` = `cut -d: -f4 $i` ];then
   echo "good guy"
   exit 0
  else
   echo "bad guy"
   exit 1
  fi
 done
 
7、写一个脚本程序,给定一个用户,获取其密码警告期限;然后判断用户最近一次修改密码的时间距离今天是否已经小于警告期限;
8、判断命令历史中历史命令的总条目是否大于1000,如果大于,则显示“some command will gone”,否则显示OK
 
#!/bin/bash
a=`history | tr -s [:space:]|tail -1|awk '{print $1}'`
if [ $a > 1000 ];then
echo "some command will gone."
else
echo "OK"
fi
9、给定一个文件,如果是普通文件,就显示出来,如果是目录文件,也显示出来,否则就显示“无法识别”
#!/bin/bash
if [ -f `ls /etc/inittab` ];then
echo “普通文件”
elif [ -d `ls /etc/inittab` ];then
echo ”目录文件“
else
echo "无法识别"
fi

10、写一个脚本,能接受一个参数(文件路径),判断这个参数如果是一个存在的文件就显示“ok”,否则显示“No such file”

 
#!/bin/bash  
 read -p "请输入一个文件路径:" filename
 
 if [ -e $filename ];then
  echo "OK"
 else
  echo "No such file"
 fi
11、写一个脚本,给脚本传递两个参数,显示两则之和和两者之积

#!/bin/bash
if [ $# -lt 2 ]; then
exit 8
fi
echo "$[$1+$2]"
echo "$[$1*$2]"

  编写脚本,每天02:20   备份/etc/目录中所有文件,名称为当天日期;且保存文件为压缩文件;

    crontab -e -- 20 2 * * * /root/xxx.sh
vim xxx.sh
#!/bin/bash
#
tar cJvf /var/`date +%F`.xz /etc/
chmod +x xxx.sh

  将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中;

head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

  将登录至当前系统上用户信息汇总的后3位信息转换为大写后保存至/tmp/who.out文件中;

who | tail -3 | cut -d' ' -f1 | tr [[:lower:]] [[:upper:]] | tee /tmp/who.out

  显示/proc/meminfo文件中大小s开头的行

grep -i "^s" /proc/meminfo

  显示/etc/passwd文件中不以/bin/bash结尾的行

    grep -v "/bin/bash$" /etc/passwd

  显示/etc/passwd文件中UID号最大的用户的用户名

    sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1

  如果用户root存在,显示其默认的shell程序

    grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
    id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7

  找出/etc/passwd中的两位或三位数

    grep "[0-9]\{2,3\}"  /etc/passwd

  显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行

    grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit

  找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行

    netstat -tan | grep "LISTEN[[:space:]]*$"

  添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行

 useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd

  输入一个设备文件,输出这个设备文件的基本信息;

 
read -t 5 -p "输入一个设备文件名:" devname
[ -z $devname ] && fdisk -l && exit 1 if [ -b /dev/$devname ];then
fdisk -l /dev/$devname
exit 0
else
echo "$devname 不是设备文件"
echo "Usage:'请输入一个设备文件,如 sda'"
fi

  99乘法表:

for i in `seq 9`;do
for j in `seq 9`;do
[ $j -le $i ] && echo -n -e "$i*$j=`echo $(($i*$j))`\t"
done
echo " "
done

  写一个for循环--遍历本网络网段中所有up的电脑

declare -i sum=0

        for i in $(seq 1 100);do
ping -c 1 -w 1 10.6.12.$i &> /dev/null
if [ $? -eq 0 ];then
let sum++
echo "10.6.12.$i 是通的"
else
echo "10.6.12.$i 是不通的"
fi
done echo "总共有 $sum 台电脑在线"

  1到100的偶数和

declare -i sum=0

        for i in $(seq 0 2 100);do
let sum+=$i
done echo “总数为:$sum”

  判断 /var/log/ 的所有文件,以 .log 结尾的文件统计处理啊,并显示:

        declare -i sum=0

        for i in $(ls /var/log/);do
if [ "*.log" = $i ];then
echo $i
let sum++
fi
done echo ".log结尾的文件有:$sum"

  通过位置变量创建linux系统账户及密码

useradd "$1"
echo "$2" | passwd --stdin "$1"

  每周5使用tar命令备份/var/log 下的所有日志文件,防止文件覆盖  

 
tar czf /var/log/date +%F-%H`.bak.zip /var/log

crontab -e
* * * * 5 /root/tar.sh

  实时监控本机内存和硬盘剩余空间,剩余内存小于500M,根分区剩余空间小于1000M的时候发送报警邮件

disk_size=$(df / | awk '/\//{print $4}' )
mem_size=$(free | awk '/mem/{print $4}')
while true;do
if [ $disk_size -le 512000 -a $mem_size -le 1024000 ];then
mail -s "Warning" root << EOF
资源不足
EOF
fi
done

  脚本生成一个 100 以内的随机数值,提示用户猜数字,更具用户的输入,提示用户猜对了,猜打了或猜小了,直至用户猜对脚本结束。

num=$[RANDOM%100+1]
echo "$num"
while true;do
read -p "计算机生成一个 1-100 的随机数,你猜:" cai
fi [ $cai -eq $num ];then
echo "猜对了"
elif [ $cai -gt $num ];then
echo "才打了"
else
echo "猜小了"
fi
done

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

if [ $USER == "root" ];then
yum -y install vsftpd
else
echo "您不是管理员,没有权限"
fi

  斐波那契数列

fab(){
if [ $1 -eq 1 ];then
echo 1
elif [ $1 -eq 2 ];then
echo 1
else
echo $[$(fab $[$1-1])+$(fab $[$1-2])]
fi
}
fab 7

  统计 /var/log/*.log 中 索引为偶数 的文件 的行数的 和;

       a=(/var/log/*.log)
for i in {0..7};do
if [ $[$i%2] -eq 0 ];then
line=`wc -l ${a[$i]} | cut -d' ' -f1`
sum+=$line # sum+=`wc -l ${a[$i]} | cut -d' ' -f1` # sum+=$(wc -l ${a[$i]} | cut -d' ' -f1)
fi
done
echo $sum

  生成10个随机数,打印其中最大的数值

declare -a a
declare -i max=0 for i in `seq 0 9`;do
a[$i]=$RANDOM
[ ${a[$i]} -gt $max ] && max=${a[$i]}
done
echo ${a[@]}
echo "最大值为:$max"

  判断/^r..ter/,/^user.*\>/之间的行的用户,是bash的用户,并显示用户的用户名,和UID

for i in `awk '/^r..ter/,/^user.*\>/{print $NF}' /etc/passwd`;do
if [[ $i == "/bin/bash" ]];then
echo ``
fi
done while line;do
if [[ "/bin/bash" == `awk -F: '{print $NF}' $line` ]];then
awk -F '{print $1,$3}' $line
fi
done << `sed -n '/^r..ter/,/^user.*\>/p' /etc/passwd`

  监控某个固定网站的HTTP服务器的状态(测试返回码)

url=http://www.baidu.com
check_http(){
status_code=$(curl -m 5 -s -o /dev/null -w %{http_code} $url)
}
while true;do
check_http
date=$(date +%Y%m%d-%H:%M:%S)
echo "当前时间为:$date"
echo "$url 服务异常,状态码为${status_code}.请尽快排查异常" > /tmp/http$$.pid if [ $status_code -ne 200 ];then
mail -s Warning root < /tmp/http$$.pid
else
echo "$rul连接正常" >> /var/log/http.log
fi
sleep 5
done

  显示CPU厂商信息

awk '/vendor_id/{print $3}' /proc/cpuinfo

shell_Day01的更多相关文章

随机推荐

  1. Kubernetes--管理Pod对象的容器(3)

    共享节点的网络名称空间 同一个Pod对象的各容器均运行于一个独立的.隔离的Network名称空间中,共享同一个网络协议栈及相关的网络设备.也有一些特殊的Pod对象需要运行于所在节点的名称空间中,执行系 ...

  2. P12证书转BKS证书

    安卓 识别的证书格式是bks ,而我之前生成的证书格式是p12 所以需要转换一下,至于怎么生成p12,请看我转载的的文章  Nginx https 双向认证. 1.请先下载第三方转换工具protecl ...

  3. linux 中后台运行python脚本

    nohup python yourscript.py &可以让你的程序在后台运行,控制台输出导向nohup.out文件 使用nobup命令 结尾处加一个& 符号

  4. MassTransit - .NET Core 的分布式应用程序框架

    简介 MassTransit 是一个免费的.开源的.NET 分布式应用程序框架.MassTransit 使创建应用程序和服务变得容易,这些应用程序和服务利用基于消息的松散耦合异步通信来实现更高的可用性 ...

  5. (二)用go实现二叉查找树

    本篇,我们用go简单的实现二叉查找树. 1.节点定义 type BSNode struct{ data int left, right, parent *BSNode } 2.前序遍历 func (p ...

  6. mysql学习问题解决

    1.字符串转时间格式函数: STR_TO_DATE('2017-10-19 16:47:00', '%Y-%m-%d %H:%i:%s') oracle的为to_date 2.specified tw ...

  7. (1028) 权限,chmod、chgrp、chown详解

    https://www.cnblogs.com/Berryxiong/p/6193866.html 例1: $ chgrp - R book /opt/local /book 改变/opt/local ...

  8. python33

    Python逻辑运算符 Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20: 运算符 逻辑表达式 描述 实例 and x and y 布尔"与" - 如果 x ...

  9. JupyterNotebook开发介绍

    简单介绍 核心目录在notebook下面,主页面在tempaltes目录下的notebook.html文件,没有用到传统的前端开发技术,还是jquery之类的前端,而且用了非常多的类库,开发环境的搭建 ...

  10. 通过抓取pintpoint2的页面信息把数据存入数据库python3

    目标:对生产环境的服务质量进行量化, 解决办法:把pintpoint2里的数据转存入mysql数据库,作成报表,目前支持总请求数,错误请求数,中位数,平均数,95值(每分钟一次定时任务),其它指标可以 ...