1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。
[root@localhost sh.log]# cat systeminfo.sh #!/bin/bash #author:DYW #显示当前主机系统信息,主机名,ipv4,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小。 echo "Host system communication and hostname is `hostname`" echo "Ip is `ip addr |sed -n "9p"|sed -e "s@.*net[[:space:]]\+@@" -e "s@/.*@@"`" echo "Operating system version is `uname -i`" echo "Kernel version is `uname`" echo "Model name is `lscpu | sed -n "/Model name/p" |sed "s@Model name:[[:space:]]\+@@"`" echo "Memory size is `free -h |sed -n '2p'|sed "s@Mem:[[:space:]]\+@@"|sed "s@[[:space:]].*@@"`" echo "Hard drive size is `fdisk -l| sed -n '2p'|sed "s@.*\:[[:space:]]\+@@"|sed "s@,.*@@"`" [root@localhost sh.log]# bash systeminfo.sh Host system communication and hostname is localhost.localdomain Ip is 192.168.1.114 Operating system version is x86_64 Kernel version is Linux Model name is Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz Memory size is 977M Hard drive size is 107.4 GB
2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
[root@localhost sh.log]# cat backup.sh #!/bin/bash #author:DYW #实现每日将/etc/目录备份到/wang中 mubiaodizhi="/wang/etc$(date +%F)" cp -a /etc/ $mubiaodizhi && echo "Backup $mubiaodizhi finished" [root@localhost sh.log]# bash backup.sh Backup /wang/etc2016-08-11 finished
3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
[root@localhost sh.log]# cat disk.sh #!/bin/bash #author:DYW #显示当前硬盘分区中空间利用率最大的值 maxzhi=`df |grep "^tmpfs"|tr -s " "|sort -nr -t" " -k5|head -n1|cut -d" " -f5` echo "硬盘分区使用率最大的值是$maxzhi" [root@localhost sh.log]# bash disk.sh 硬盘分区使用率最大的值是2%
4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
[root@localhost sh.log]# cat links.sh #!/bin/bash #author #显示正连接本主机的每个远程主机的ipv4地址和连接数,并按连接数从大到小排序 echo -e "远程主机连接:\n\t连接次数\t连接ip" netstat -nt |grep "tcp" |tr -s " " ":"|cut -d: -f6|uniq -c|sort -nr|tr -s ' ' '\t' [root@localhost sh.log]# bash links.sh 远程主机连接: 连接次数 连接ip 3 192.168.1.106
5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
[root@localhost sh.log]# cat sumid.sh #!/bin/bash #author:DYW #计算/etc/passwd文件中的第10个用户和第20用户的id之和 yonghu10=`sed -n 10p /etc/passwd|cut -d: -f3` yonghu20=`sed -n 20p /etc/passwd|cut -d: -f3` let sum=$yonghu10+$yonghu20 echo -e "user10 uid is $yonghu10\nuser20 uid is $yonghu20\nsum user10 and user20 is $sum" [root@localhost sh.log]# bash sumid.sh user10 uid is 11 user20 uid is 89 sum user10 and user20 is 100
6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
[root@localhost sh.log]# cat sumspace.sh #!/bin/bash #author:DYW #传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。 file1=`grep "^$" $1|wc -l` file2=`grep '^$' $2|wc -l` let sum=$file1+$file2 echo "the sum of $1 and $2 spacelines is $sum" [root@localhost sh.log]# bash sumspace.sh /wang/file1 /wang/file2 the sum of /wang/file1 and /wang/file2 spacelines is 14
6、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
[root@localhost sh.log]# cat sumfile.sh #!/bin/bash #author:DYW #统计/etc,/var,use目录中共有多少个一级子目录和文件 dir1=`ls -a $1 | tr -s " " "\n" | wc -l` dir2=`ls -a $2 | tr -s " " "\n" | wc -l` dir3=`ls -a $3 | tr -s " " "\n" | wc -l` let sum=$dir1+$dir2+$dir3 echo "the sum of $! and $2 and $3 dirfile is $sum" [root@localhost sh.log]# bash sumfile.sh /etc /var /usr the sum of and /var and /usr dirfile is 214
7、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
[root@www sh.log]# cat argsnum.sh #!/bin/bash #author:DYW #接受一个文件路径作为参数,如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出,如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数。 [ $# -lt 1 ] && (echo "至少应该给一个参数";exit) || echo "`grep "^$" $1 |wc -l`" [root@www sh.log]# bash argsnum.sh /wang/file2 7 [root@www sh.log]# bash argsnum.sh 至少应该给一个参数
8、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
[root@localhost sh.log]# cat hostping.sh #!/bin/bash #author:DYW #接受一个主机ipv4地址作为参数,则是是否可连通,如果能ping通,则提示用户“该ip地址可访问”,如果不可ping通,则提示用户“该ip地址不可访问” `ping -c1 -W1 $1 &> /dev/null` && echo "该ip地址可以访问" ||echo "该ip地址不可访问" [root@localhost sh.log]# bash hostping.sh 192.168.1.1 该ip地址可以访问 [root@localhost sh.log]# bash hostping.sh 192.168.1.256 该ip地址不可访问
9、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写
[root@localhost sh.log]# bash per.sh yes [root@localhost sh.log]# cat per.sh #!/bin/bash #autor:DYW #chmod -rw /wang/file1 判断当前用户对/wang/file1文件是否不可读且不可写 chmod -rw /wang/file1 [ -r /wang/file1 -a -w /wang/file1 ] && echo "yes"||echo "no" [root@localhost sh.log]# bash per.sh yes
10、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。
[root@localhost sh.log]# cat nologin.sh #!/bin/bash #author:DYW #禁止普通用户登录系统 [ -f /etc/nologin ] && echo "普通用户已经不能登录" ||(touch /etc/nologin; echo "已经禁止普通用户登录") [root@localhost sh.log]# bash nologin.sh 普通用户已经不能登录 [root@localhost sh.log]# rm -f /etc/nologin [root@localhost sh.log]# bash nologin.sh 已经禁止普通用户登录 [root@localhost sh.log]# ls -a /etc |grep "nologin" nologin [root@localhost sh.log]# cat login.sh #!/bin/bash #author:DYW #允许普通用户登录系统 [ -f /etc/nologin ] && (rm -f /etc/nologin;echo "已经允许普通用户登录") || echo "普通用户已经可以登录" [root@localhost sh.log]# bash login.sh 普通用户已经可以登录 [root@localhost sh.log]# touch /etc/nologin [root@localhost sh.log]# bash login.sh 已经允许普通用户登录
11、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
[root@www sh.log]# cat hostping2.sh #!/bin/bash #author:DYW #接受一个主机ipv4地址作为参数,先判断是否合格ip,否,提示“ip格式不合法并退出”,是,测试是否可ping通,如果能ping通,则提示用户“该ip地址可访问”,如果ping不通,则提示用户“该ip地址ping不通” result=`ping -c1 -W1 $1 &> /dev/null && echo "该ip地址可以访问" ||echo "该ip地址不可访问"` echo "$1" |grep -E "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9|25{0-5])\>" &> /dev/null && echo "${result}" || (echo "ip格式不合法" ; exit) [root@www sh.log]# bash hostping2.sh 192.168.1.1 该ip地址可以访问 [root@www sh.log]# bash hostping2.sh 192.168.1.256 ip格式不合法 [root@www sh.log]# bash hostping2.sh 192.168.1.106 该ip地址可以访问 [root@www sh.log]# bash hostping2.sh 192.168.1.113 该ip地址不可访问
12、计算1+2+3+…+100的值
[root@localhost sh.log]# cat qiuhe.sh #!/bin/bash #author:DYW #计算1+2+...100的值 echo {1..100} |tr " " "+"|bc [root@localhost sh.log]# bash qiuhe.sh 5050
13、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之
[root@www sh.log]# cat canshuqiuhe.sh #!/bin/bash #计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之 jisuan=`seq -s "+" $1 $2 | bc` [ $2 -gt $1 ] && echo "$jisuan" || (echo "输入错误" ; exit) [root@www sh.log]# bash canshuqiuhe.sh 1 10 55 [root@www sh.log]# bash canshuqiuhe.sh 11 10 输入错误
原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/34184
评论列表(1条)
总结没写,标题不要用日期,