bash脚本编程

1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell;分别统计这两类用户的个数;通过字符串比较来实现;
#!/bin/bash
declare -i loginSum=0;
declare -i nologinSum=0;
for x in `cat /etc/passwd|cut -d: -f 7`
do
if [ “/sbin/nologin” == “$x” ];then
let nologinSum+=1;
else
loginSum+=1;
fi
done
echo “loginSum:$loginSum”
echo “nologinSum:$nologinSum”
[root@centos6 script]# sh nologin.sh
loginSum:7
nologinSum:30
2、写一个脚本:
(1)获取当前主机的主机名,保存于hostname变量中;
(2)判断此变量的值是否为localhost,如果是,则将当前主机名修改为www.magedu.com;
(3)否则,则显示当前主机名。
#!/bin/bash
hostname=”`hostname`”
if [ $hostname == “localhost” ];then
sed -i “s@HOSTNAME\=localhost@HOSTNAME\=www.mgedu.com@” /etc/sysconfig/network
`hostname www.mgedu.com`
else
echo “`hostname`”
fi
~
bash脚本编程
bash脚本编程
3、 写一个脚本,完成如下功能。
(1)传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
(2)如果存在,则显示此设备上的所有分区信息
#!/bin/bash
if [ $# -eq 0 ];then
echo “please input argument like:/dev/sda1”
fi
if [ -e “$1” ];then
fdisk -l $1;
else
echo “this directory is not exist”
fi
4、写一个脚本,完成如下功能。
脚本能够接受一个参数
(1)如果参数1为quit,则显示退出脚本,并执行正常退出;
(2)如果参数1为yes,则显示继续执行脚本;
(3) 否则,参数1为其它任意值,均执行非正常退出。
#!/bin/bash
while true
do
read -p “please input yes|quit or other string:” str
case “$str” in
quit)
echo “exit the script”;
exit 0;
;;
yes)
echo “Continue with the script”;
continue;
;;
*)
exit 1;
esac
done
~
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
read -p “please input gzip bzip2 xz: ” str
case “$str” in
gzip)
tar -zcvf /backup/etc-20171031.tar.gz /etc/ ;
;;
bzip2)
tar -jcvf /backup/etc-20171031.tar.bz2 /etc/ ;
;;
xz)
tar -Jcvf /backup/etc-20171031.tar.xz /etc/;
;;
*)
echo “error compress”;
exit 1;
esac
6.    写一个脚本,接受一个路径参数:
(1) 如果为普通文件,则说明其可被正常访问;
(2) 如果是目录文件,则说明可对其使用cd命令;
(3) 如果为符号链接文件,则说明是个访问路径;
(4) 其它为无法判断。
#!/bin/bash
if [ -f $1 ];then
echo ” This is a common file “
elif [ -d $1 ];then
echo “This is a path”
elif [ -L $1 ];then
echo “This is a Link”
else
echo “This is not a file”;
fi
7.    写一个脚本,取得当前主机的主机名,判断:
(1) 如果主机名为空或为localhost,或为”(none)”,则将其命名为mail.magedu.com;
(2) 否则,显示现有的主机名即可。
#!/bin/bash
name=”`hostname`”
if [ -z “$name” -o “$name” = “localhost” -o “$name” = “(none)” ];then
echo $hostname
sed -i “s@HOSTNAME\=localhost@HOSTNAME\=www.mgedu.com@” /etc/sysconfig/network
`hostname www.mgedu.com`
echo “2”
else
echo “`hostname`”
fi

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88177

(1)
469008940469008940
上一篇 2017-10-31 17:32
下一篇 2017-11-01 13:22

相关推荐

  • X-Y Problem

    X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎: 1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。2)在经过大量地讨…

    Linux干货 2016-08-15
  • 在 Linux 下你所不知道的 df 命令的那些功能

    原文出处: xmodulo   译文出处:linux.cn – mtunique   欢迎分享原创到运筹维幄 问题: 我知道在Linux上我可以用df命令来查看磁盘使用空间。你能告诉我df命令的实际例子使我可以最大限度得利用它吗?   对于磁盘存储方面,有很多命令行或…

    Linux干货 2015-03-02
  • 逻辑卷实战演练

    1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录 3、扩展testlv…

    Linux干货 2016-09-01
  • 网络基础命令与配置文件地址

    centos6查看网卡dmesg | grep -i ethethtool -i eth0卸载网卡驱动modprobe -r e1000rmmod e1000装载网卡驱动modprobe e1000网络配置,静态指定system-config-network-tui 字符界面式网络配置ip addr add IP地址 via 网关IP地址动态分配在/etc/…

    2017-09-09
  • DNS

    配置缓存服务器: #vim /etc/named.conf Options { Listen-on port 53 { 127.0.0.1;172.16.0.68;}; //listen-on-v6 port 53 {::1;}; ……. Allow-query {any;}; …… Dnssec-enable…

    2017-06-04
  • 马哥教育网络班20期+第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。 3、请使用命令行展开功能来完成以下练习:    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d   …

    Linux干货 2016-06-23

评论列表(1条)

  • 马哥教育
    马哥教育 2017-11-15 15:04

    稍微注意一下排版。