1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;
#!/bin/bash
awk -F: '$NF~"/sbin/nologin" {shell++} $NF!~"/sbin/nologin" {noshell++} END{printf "shell: %d \t noshell: %d \n",shell,noshell}' /etc/passwd 2、写一个脚本 (1) 获取当前主机的主机名,保存于hostname变量中; (2) 判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com; (3) 否则,则显示当前主机名;
#!/bin/bash
hostname=$HOSTNAME
if [ $hostname == "localhost" ];then
sed -i 's/HOSTNAME=.*/HOSTNAME=www.magedu.com/' /etc/sysconfig/network
else
echo $HOSTNAME
fi 3、写一个脚本,完成如下功能 (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在; (2) 如果存在,则显示此设备上的所有分区信息;
#!/bin/bash
if [ $# -lt 1 ];then
echo "input a device file!"
exit 1
fi
if [ -b $1 ];then
fdisk -l $1
else
echo "The input is not a device file!"
exit 2
fi 4、写一个脚本,完成如下功能
脚本能够接受一个参数; (1) 如果参数1为quit,则显示退出脚本,并执行正常退出; (2) 如果参数1为yes,则显示继续执行脚本; (3) 否则,参数1为其它任意值,均执行非正常退出;
#!/bin/bash
if [ $# -lt 1 ];then
echo "Enter a argument."
exit 0
fi
case $1 in
quit)
echo "scripts is quit!"
exit 0
;;
yes)
echo "scripts is go on!"
;;
*)
echo "scripts break!"
exit 1
;;
esac 5、写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一; (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz; (2) 如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.bz2; (3) 如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.xz; (4) 其它任意值,则显示错误压缩工具,并执行非正常退出;
#!/bin/bash
day=$(date +%Y%m%d)
dir=/backups
[ -d $dir ] || mkdir $dir
if [ $# -lt 1 ];then
echo "Enter a argument."
exit 0
fi
case $1 in
gzip)
tar zcf $dir/etc-$day.tar.gz /etc
;;
bzip2)
tar jcf $dir/etc-$day.tar.bz2 /etc
;;
xz)
tar Jcf $dir/etc-$day.tar.xz /etc
;;
*)
echo "choose a wrong tools."
exit 2
;;
esac 6、写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问; (2) 如果是目录文件,则说明可对其使用cd命令; (3) 如果为符号链接文件,则说明是个访问路径; (4) 其它为无法判断;
#!/bin/bash
if [ $# -lt 1 ];then
echo "Enter a argument."
exit 0
fi
if [ -f $1 ];then
echo "It is a regular file,can be access!"
elif [ -d $1 ];then
echo "A directory,can used by cd command!"
elif [ -L $1 ];then
echo "A symbolic file!"
else
echo "can not recognize!"
exit 1
fi 7、写一个脚本,取得当前主机的主机名,判断