Fork me on GitHub

日常脚本练习

 

1、创建用户脚本

#!/bin/bash
#
#********************************************************************
#Author:    小汤圆
#:   
#Date:     2019-12-04
#FileName:   CreateUser.sh
#URL:       暂无
#Description:    The test script
#Copyright (C):   2019 All rights reserved
#QQ Address        2382990774
#**************************************************************
COLOR='\033[1;31m'
COLOREND='\033[0m'
useradd $*
echo -e "$COLOR User $* is 'created' $COLOREND"

 

 

注释:$*为系统自带变量,$COLOR和$COLOREND为自定义的变量,想修改显示的颜色可以很方便的修改。


2、复制文件到其他机器

#!/bin/bash
#**************************************************************
COLOR='\033[1;32m'
COLOREND='\033[0m'
echo -e "$COLOR 'start'$COLOREND"
scp -r $* root@192.168.27.102:/data/
echo -e "$COLOR 'over'$CLOOREND"

 

 

 注释:user.sh 为文件名,加-r可以传文件也可以传文件夹

 


 

3、删除改为移到到某个文件夹

#!/bin/bash
#**************************************************************
CurrentTime=`date '+%F_%s'`
DestinationDir='/tmp'
Color='\033[1;33m'
ColorEnd='\033[0m'
mkdir -p $DestinationDir/$CurrentTime
mv $* $DestinationDir/$CurrentTime/
echo -e "$Color move complete. you will find the files that is deleted in $DestinationDir/$CurrentTime $ColorEnd"

 

 注释:alias rm='/data/scripts37/rm.sh'  定义别名rm等于刚刚创建的脚本,执行rm就自动执行脚本

 定义别名的地方 直接在根目录下输入vim .bashrc,或者在随便什么目录下输入vim ~/.bashrc

 

$[RANDOM%7+31 颜色随机

 


 4、编写计算鸡兔同笼

#!/bin/bash
#********************************************************************
Color="\033[$[RANDOM%7+31]m"
ColorEnd="\033[0m"
read -p "Input head number: " head
read -p "Input foot number: " foot
rabbit=$[foot/2-head]
chook=$[head-rabbit]
echo -e $Color"rabbit:$rabbit chook:$chook"$ColorEnd

注释:$[RANDOM%7+31 颜色随机

 


 

5、编写ping脚本

#!/bin/bash
#********************************************************************

ping -c1 -W2 $* > /dev/null && echo "$* is up" || echo "$* is unreachable"

注释:该脚本未设置输入为空的提示,下面有更优化的版本

 



6、ping 脚本的进阶版

#!/bin/bash
#
#********************************************************************

Color="\033[$[RANDOM%7+31]m"
ColorEnd="\033[0m"
[ $# -eq 0 ] && { echo "Usage: `basename $0` Input your ip address " ; exit 10; }
ping -c1 -W2 $* > /dev/null && echo -e $Color "$* is up"$ColorEnd || echo -e $Color"$* is down"$ColorEnd

 

 注释:该脚本未设置判断IP地址是否正确,IP地址不存在也会显示


7、ping 脚本更优化版

#!/bin/bash
#
#********************************************************************

Color="\033[$[RANDOM%7+31]m"
ColorEnd="\033[0m"
[ $# -eq 0 ] && { echo -e $Color "Usage: `basename $0` Input your ip address "$ColorEnd ; exit 10; }
[[ $1 =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$  ]]  && echo 'Correct IP address' || { echo 'Please enter the IP address of the specification'; exit 10; }
ping -c1 -W2 $* > /dev/null && echo -e $Color "$* is up"$ColorEnd || echo -e $Color"$* is down"$ColorEnd

1,ping 空的地址 会提示让你输入地址:

 

 2,ping 一个不规范的IP地址

3,ping一个可以ping通的地址或网关或子网掩码会提示你该IP地址是开启的:

 

 4,ping 一个正确的IP地址,但是网络上并没有这个IP地址或者未启用该IP地址

 

 


8、输入yes or no

#!/bin/bash
#
#********************************************************************

read -p "Please choose yes or no:" value
value=`echo $value |tr 'A-Z' 'a-z'`
[[ "$value" =~ ^(y|yes)$ ]] && echo "Your input is: $value" && exit 0
[[ "$value" =~ ^(n|no)$ ]] && echo "Your input is: $value"|| echo "Please execute again,and input yes or no"


 

8、输入yes or no

#!/bin/bash
#
#********************************************************************

read -p 'Do you agree ?(yes or no):' ANSWER
[[ "$ANSWER" =~ ^[Yy]([Ee][Ss])?$ ]] && { echo ok ; exit; }
[[ "$ANSWER" =~ ^[Nn][Oo]?$ ]] && { echo Not ok ; exit ; }
echo 'Your input is false.'

 


9、计算1..100的和

 declare -i sum=0
for i in {1..100};do
 let sum+=i
done
echo sum=$sum

seq -s+ 100 |bc 也可以实现这个结果,但并不是脚本

 


 

判断是否是基数,是的话相加

declare -i sum=0
for i in {1..100};do
 if [ $[i%2] -eq 1 ];then
 let sum+=i
 fi
done
echo sum=$sum


 

NetId=172.16.10
for HostId in {1..254};do
 if ping -c1 -W1 $NetId.$HostId &> /dev/null ;then
  echo $NetId.$HostId is up | tee -a /data/hostlist.txt
 fi
done

扫描这个网段里的IP处于开机状态的,显示IP地址up并保存的/data/hostlist.txt里

 


 

NetId=172.16.10
for HostId in {1..254};do
 {
 if ping -c1 -W1 $NetId.$HostId &> /dev/null ;then
  echo $NetId.$HostId is up | tee -a /data/hostlist1.txt
 fi
 } &
done
wait

快速执行扫描主机{} & 同时执行多次

 


 

 


posted @ 2019-12-05 17:59  Alex-Lzy  阅读(349)  评论(0编辑  收藏  举报