1、写一个脚本,判断当前系统上所有用户的 shell 是否为可登录 shell(即用户的 shell 不是 / sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;
- #!/bin/bash
- login=`grep -v '/sbin/nologin$' /etc/passwd | wc -l`
- nologin=`grep '/sbin/nologin$' /etc/passwd | wc -l`
- echo "可登录用户共$login"
- echo "不可登录用户共$nologin"
二、写一个脚本
(1) 获取当前主机的主机名,保存于 hostname 变量中;
(2) 判断此变量的值是否为 localhost,如果是,则将当前主机名修改为 www.magedu.com;
(3) 否则,则显示当前主机名;
- #!/bin/bash
- hn=`hostname`
- if [[ $hn == "localhost" ]];then
- hostname wwww.magedu.com
- else
- echo $hn
- fi
三、写一个脚本,完成如下功能
(1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
(2) 如果存在,则显示此设备上的所有分区信息;
- [root@localhost shell]# cat disk.sh
- #!/bin/bash
- disk=`fdisk -l | grep -o "^磁盘 /dev/sd[a-z]" | awk '{print $2}'`
- for i in $disk
- do
- echo "磁盘设备$i"
- partition=`fdisk -l | egrep -o "^${i}[1-9]"`
- df -h $partition
- echo
- done
- [root@localhost shell]# ./disk.sh
- 磁盘设备/dev/sda
- 文件系统 容量 已用 可用 已用% 挂载点
- /dev/sda1 477M 94M 354M 21% /boot
- /dev/sda2 75G 1.6G 69G 3% /
- devtmpfs 1.9G 0 1.9G 0% /dev
- 磁盘设备/dev/sdc
- 文件系统 容量 已用 可用 已用% 挂载点
- /dev/sdc1 9.8G 37M 9.2G 1% /data2
- /dev/sdc2 9.8G 37M 9.2G 1% /data3
- 磁盘设备/dev/sdb
- 文件系统 容量 已用 可用 已用% 挂载点
- /dev/sdb1 9.8G 37M 9.2G 1% /data1
四、写一个脚本,完成如下功能
脚本能够接受一个参数;
(1) 如果参数 1 为 quit,则显示退出脚本,并执行正常退出;
(2) 如果参数 1 为 yes,则显示继续执行脚本;
(3) 否则,参数 1 为其它任意值,均执行非正常退出;
- #!/bin/bash
- read -p "please input option:" option
- case $option in
- quit)
- echo "quit"
- exit 0;;
- yes)
- echo "continue";;
- *)
- echo "error"
- exit 1;;
- esac
五、写一个脚本,完成如下功能
传递一个参数给脚本,此参数为 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
- read -p "Please select the compression format in (gzip|bzip2|xz)" option
- case $option in
- gzip)
- tar -zcf /backups/etc-`date "+%Y%m%d"`.tar.gz /etc &> /dev/null
- ;;
- bzip2)
- tar -jcf /backups/etc-`date "+%Y%m%d"`.tar.bz2 /etc &> /dev/null
- ;;
- xz)
- tar -Jcf /backups/etc-tar -`date "+%Y%m%d"`.tar.xz /etc &> /dev/null
- ;;
- *)
- echo "error!"
- exit 1
- ;;
- esac
六、写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问;
(2) 如果是目录文件,则说明可对其使用 cd 命令;
(3) 如果为符号链接文件,则说明是个访问路径;
(4) 其它为无法判断;
- #!/bin/bash
- read -p "Please enter a path:" path
- if [ -f $path ];then
- echo "files Accessible"
- elif [ -d $path ];then
- echo "Directory accessible"
- elif [ -h $path ];then
- echo "This is path"
- else
- echo "something error"
- fi
七、写一个脚本,取得当前主机的主机名,判断
(1) 如果主机名为空或为 localhost,或为 "(none)",则将其命名为 mail.magedu.com;
(2) 否则,显示现有的主机名即可;
- #!/bin/bash
- hn=`hostname`
- if [[ -z $hn -o $hn == "localhost" -o $hn == "(none)" ]];then
- hostname mail.magedu.com
- echo "修改主机名为:mail.magedu.com"
- else
- echo "当前主机名为:$hn"
8、写一脚本,接受一个用户名为参数;
(1) 如果用户的 id 号为 0, 则显示其为管理员;
(2) 如果用户的 id 号大于 0 且小于 500, 则显示其为系统用户;
(3) 否则,则显示其为普通用户;
- #!/bin/bash
- while true
- do
- read -p "Please enter a username:" username
- if ! id $username &>/dev/null;then
- echo "没有此用户"
- else
- break
- fi
- done
- userid=$(id -u $username)
- if [[ $userid -eq 0 ]];then
- echo "$username是管理员"
- elif [[ $userid -lt 500 ]];then
- echo "$username是系统用户"
- else
- echo "$username是普通用户"
- fi
来源: http://www.bubuko.com/infodetail-1956304.html