当前位置: 首页 > news >正文

shell脚本实例(2)

1.传给脚本一个参数:目录,输出该目录中文件最大的,文件名和文件大小

 

#!/bin/bash
if [ $# -ne 1 -o ! -d $1 ];then
  echo "Args is error."
  exit 3
fi

LC=`du -a $1 | wc -l`
for I in `seq $LC` ;do
  size=`du -a $1 | sort -nr | head -$I | tail -1 | awk '{print $1}'`
  filename=`du -a $1 | sort -nr | head -$I | tail -1 | awk '{print $2}'`
  if [ -f $filename ];then
   echo "The big file is $filename ,Size is $size."
   break
  fi
done

 

2.查询当前192.168.1.x网段内,那些IP被使用了,输出这些IP到一个文件中。

#!/bin/bash

for I in {1..254};do
  N=`ping -c 1 192.168.1.$I | awk -F, '/received/ {print $2}' | cut -d' ' -f2`
  [ $N -eq 1 ] && echo "192.168.1.$I" >>/tmp/ips.txt
done

3.把shell为bash的用户输出到/tmp/users.txt中

#!/bin/bash
LC=`wc -l /etc/passwd | awk '{print $1}'`
N=1
for I in `seq $LC` ;do
  SHE=`head -$I /etc/passwd | tail -1 | cut -d: -f7`
  U=`head -$I /etc/passwd | tail -1 | cut -d: -f1`
  if [ $SHE == '/bin/bash' ];then
   echo -e "$N \t $U" >> /tmp/users.txt
   N=$[$N+1]
  fi
done 

4.依次向/etc/passwd中的每个用户问好,输出用户名和id,并统计一共有多少个用户

(1)写法一

#!/bin/bash
file="/etc/passwd"
LINES=`wc -l $file | cut -d" " -f1`
for I in `seq 1 $LINES`;do
userid=`head -$I $file | tail -1 |cut -d: -f3`
username=`head -$I $file | tail -1 |cut -d: -f1`
echo "hello $username,your UID is $userid"
done
echo "there are $LINES users"

(2).写法二

#!/bin/bash
file=/etc/passwd
let num=0
for I in `cat $file`;do
username=`echo "$I" | cut -d: -f1`
userid=`echo "$I" | cut -d: -f3`
echo "Hello,$username,your UID is $userid"
num=$[$num+1]
done
echo "there are $num users"

5.切换工作目录到/var ,依次向/var 目录中每个文件或子目录问好(形如:Hello,log),并统计/var目录下共有多少个文件显示出来

(提示:for File in /var/*;或 for File in 'ls /var ')

#!/bin/bash
 cd /var
 let num=0
 for I in `ls /var/*`;do
 echo "hello $I"
 num=$[$num+1]
 done
 echo "the number of files is $num"

6.循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容,然后把这些行保存到/tmp/mypasswd文件中

#!/bin/bash
file="/etc/passwd"
for I in 2 4 6 10 13 15;do
exec 3>/tmp/mypasswd
line=`head -$I $file | tail -1`
echo "$line"
echo "$line" >&3
exec 3>&-
done

7,写一个脚本

  (1)显示当前系统日期和时间,而后创建目录/tmp/lstest

  (2)切换工作目录至/tmp/lstest

      (3)创建目录a1d,b56e,6test

      (4)创建空文件xy,x2y,732

      (5)列出当前目录下以a,x或者6开头的文件或目录

      (6)列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录 

  

#!/bin/bash
 
date
mkdir -pv /tmp/lstest
cd /tmp/lstest
mkdir a1d b56e 6test
touch xy x2y 732
ls [ax6]*
ls [[:alpha:]][[:digit:]]*

8.添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加

 #!/bin/bash
   for I in `seq 1 10`;do
   cut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$I
   done

9.通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线
       如果在线,就显示“ip is up”
       如果不在线,就显示“ip is down”  

#!/bin/bash
   for I in `seq 151 254`;do
   ping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" ||        echo "192.168.0.$I is down"
   done

10.zookeeper一个节点通过脚本启动所有的节点

#!/bin/bash

if [ $# -ne 1 ]
then
        echo "please give a parameter to tell me what to do for example [start|stop|restart|status]" && exit 1
fi
echo "$1 zkServer in every node......"

list=`cat /usr/local/zookeeper-3.4.6/conf/zoo.cfg | grep server | awk -F : '{print $1}' | awk -F '=' '{print $2}'`

for i in $list
do
        echo "$1 zkServer in $i......"
        ssh $i "/usr/local/zookeeper-3.4.6/bin/zkServer.sh $1" &> /dev/null
done

for i in $list
do
        echo "show zkServer status in $i......"
        ssh $i "/usr/local/zookeeper-3.4.6/bin/zkServer.sh status"
done

  

 

  

  

  

  

 

  

 

转载于:https://www.cnblogs.com/zwgblog/p/5792609.html

相关文章:

  • WinForm 窗体属性
  • Javascript弹出层-初探
  • Java json工具类,jackson工具类,ObjectMapper工具类
  • PostgreSQL 最佳实践 - 任意时间点恢复源码分析
  • 第一次作业p7 1-1 1-2 1-6
  • 华为VRRP配置
  • 你掌握的技术排第几?
  • 解决mysql 1062 主从错误
  • LINKEDSERVER 与 ALIAS
  • while、dowhile、switchcase 循环嵌套、穷举、迭代
  • Git安装
  • 你真的了解UIScrollView吗?
  • Python中的split()函数的使用方法 详解
  • Percona TokuDB
  • IOS 打包所遇到的问题以及解决方案
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Android交互
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java多态
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Netty源码解析1-Buffer
  • 对超线程几个不同角度的解释
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端学习笔记之观察者模式
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 时间复杂度与空间复杂度分析
  • 使用 Docker 部署 Spring Boot项目
  • 带你开发类似Pokemon Go的AR游戏
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • # Maven错误Error executing Maven
  • #define、const、typedef的差别
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Python) SOAP Web Service (HTTP POST)
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读40-45)图像描述1
  • (十) 初识 Docker file
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)图像的%2线性拉伸
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET CLR Hosting 简介
  • .Net 路由处理厉害了
  • .NET 命令行参数包含应用程序路径吗?
  • /etc/fstab和/etc/mtab的区别
  • :not(:first-child)和:not(:last-child)的用法
  • [ C++ ] STL---string类的使用指南
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • []sim300 GPRS数据收发程序
  • [20181219]script使用小技巧.txt
  • [autojs]autojs开关按钮的简单使用
  • [ERROR] Plugin 'InnoDB' init function returned error