linux如何编写一个脚本题目,shell脚本练习题

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。

#!/bin/bash

##编写脚本/root/bin/systeminfo.sh,显示当前主机系统信 息,包括主机名,IPv4地址,操作系统版本,内>核版本, CPU型号,内存大小,硬盘大小。

echo "主机名;`hostname`"

echo "ip地址:`ifconfig | tr -s " " ":" | cut -d : -f4 | head -n 2 | tail -n 1`"

echo "内核版本:`uname -r`"

echo "CPU信息:`lscpu | grep -i "model name"`"

echo "操作系统版本:`cat /etc/redhat-release`"

echo "内存剩余量: `free -m | grep Mem | tr -s " " ":" | cut -d : -f4`"

echo "磁盘使用量:`df -h | grep "/dev/sd" | tr -s " " ":" | cut -d : -f5 | tr -d "%"`"

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录 备份到/root/etcYYYY-mm-dd中

#!/bin/bash

##编写脚本/root/bin/backup.sh,可实现每日将/etc/目录 备份到/root/etcYYYY-mm-dd中

echo "正在备份..."

cp -a /etc /root/etc$(date +%F) && echo "备份完成"

~

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利 用率最大的值

#!/bin/bash

##编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利 用率最大的值

maxdisk=`df | grep "/dev/sd" | tr -s " " ":" | cut -d : -f5 | sort -nr | head -n1`

maxuse=`df | grep "/dev/sd" | tr -s " " ":" | cut -d : -f1 | sort -nr | head -n1`

echo "磁盘"$maxuse"使用量为:"$maxdisk

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远 程主机的IPv4地址和连接数,并按连接数从大到小排序

#!/bin/bash

##编写脚本/root/bin/links.sh,显示正连接本主机的每个远 程主机的IPv4地址和连接数,并按连接数从大到小排序

echo -e "远程主机连接统计为:\n\t连接数\t远程主机IP"

netstat -nt | tr -s " " | cut -d " " -f5 | cut -d : -f1 | sort -n | uniq -c |tr -s " " "\t"| egrep '([0-9]+.){3}[0-9]+'

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd 文件中的第10个用户和第20用户的ID之和

#!/bin/bash

##写一个脚本/root/bin/sumid.sh,计算/etc/passwd 文件中的第10个用户和第20用户的ID之和

user10=`cat /etc/passwd | cut -d : -f3 | sed -n "10p"`

user20=`cat /etc/passwd | cut -d : -f3 | sed -n "20p"`

let Num=$user10+$user20

echo $Num

6、写一个脚本/root/bin/sumspace.sh,传递两个文件 路径作为参数给脚本,计算这两个文件中所有空白行之和

#!/bin/bash

##写一个脚本/root/bin/sumspace.sh,传递两个文件 路径作为参数给脚本,计算这两个文件中所有空白行之和

File1=$(grep "^$" $1 | wc -l)

File2=$(grep "^$" $2 | wc -l)

let Sumlink=$File1+$File2

echo "the sum of $1 and $2 spacelines is $Sumlink"

7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

#!/bin/bash

##写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

num1=$(ls -l /etc | wc -l)

num2=$(ls -l /var | wc -l)

num3=$(ls -l /usr | wc -l)

let Num=$num1+$num2+$num3

echo $Num

8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作 为参数;如果参数个数小于1,则提示用户“至少应该给一个 参数”,并立即退出;如果参数个数不小于1,则显示第一个 参数所指向的文件中的空白行数

#!/bin/bash

##写一个脚本/root/bin/argsnum.sh,接受一个文件路径作 为参数;如果参数个数小于1,则提示用户“至少应该给一

个 参数”,并立即退出;如果参数个数不小于1,则显示第一个 参数所指向的文件中的空白行数

[[ $1 == "" ]] && echo "please enter a parameter" || echo $(grep "^$" $1 | wc -l)

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问

#!/bin/bash

#

ipaddr='(\\.){3}\'

read -p "please input a IPV4 addr: " ipv4

if [[ $ipv4 =~ $ipaddr ]];then

echo "a legal IP."

ping $ipv4 -c 4

echo "这个IP可以正常访问"

else

echo "unlegal IP"

echo "请输入正确的网址"

exit

fi

10、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判 断当前用户对/tmp/fiile1文件 是否不可读且不可写 ?

#!/bin/bash

##chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判 断当前用户对/tmp/fiile1>文件 是否不可读且不可写 ?

flie1=/home/soft/zuoye/file

[ -r $file1 ]

arg1=$(echo $?)

echo $arg1

[[ $arg1 -eq 0 ]] && echo "该用户对此文件有读的权限" || echo "该用户对此文件没有

读的权限"

[ -w $file1 ]

arg2=$(echo $?)

echo $arg2

[[ $arg2 -eq 0 ]] && echo "该用户对此文件有写的权限" || echo "该用户对此文件没有

写的权限"

11、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和允许普通用户登录系统。

#!/bin/bash

touch /etc/nologin

12、计算1+2+3+…+100的值

#!/bin/bash

for (( i = 0; i 

do

result=$[ ${result} + ${i} ]

done

echo $result

原创文章,作者:forest,如若转载,请注明出处:http://www.178linux.com/35391

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值