日常脚本练习
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
快速执行扫描主机{} & 同时执行多次