Linux部分shell脚本汇总(三)

Linux部分shell脚本汇总(三)

1.改文件后缀

#!/usr/bin/bash

for name in `ls *.html` 
do
        mv $name ${name%.html}.txt
done

2.按指定键执行指定命令

#!/usr/bin/bash
read -p "pls input a number : " n
case "$n" in
1)
        systemctl status firewalld 
        echo "变量是1"
  ;;
2)
        echo "变量是2"
  ;;
3)
        echo "变量是3"
  ;;
*)
        echo "请重新输入1-3"
        exit
  ;;
esac

3.多种情况条件判断

#!/usr/bin/bash
read -p "pls input score to test level : " score
if [ $score -ge 90 ];then
        echo "优秀"
elif [ $score -ge 80 ];then
        echo "良好"
elif [ $score -ge 70 ];then
        echo "中等"
elif [ $score -ge 60 ];then
        echo "及格"
else
        echo "不及格"
fi

4.小工具箱,指定键执行指定命令

#!/bin/bash
cat << EOF
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
EOF
read -p "your choice: " choice
case $choice in
m|M)
        free -m
        ;;
d|D)
        df -h
        ;;
q|Q)
        exit
        ;;
*)
        echo "Invalid input"
        ;;
esac

5.跳板机,跳到web1或web2

#!/usr/bin/bash
#server
web1=192.168.157.156    定义ip
web2=192.168.157.149
cat <<-EOF
 ------------------
|1. 192.168.157.156|
|2. web2                  |
 ------------------
EOF
read -p "input your number: " num    输入
case "$num" in
1)
        ssh alice@$web1 -p22
        ;;
2)
        ssh alice@$web2
        ;;
esac

6.删除用户

#!/usr/bin/bash
#by liu
read -p "please input a username: " user
id $user &> /dev/null
if [ $? -ne 0 ]  ;then
        echo "no such user: $user"
	exit
fi
read -p "are you sure ? [y/n] : " action
if [ "$action" = "y" ]   ;then
        userdel -r $user
else
        echo "good!"
fi

7.输入1-5,如果输入其他则跳出

#!/bin/bash
while :
do      
        echo -n "Input a number between 1 yo 5: "
        read aNum
        case $aNum in
        1|2|3|4|5)
                echo "your number is $aNum"
                ;;
        *)
        echo "you do not select a number between 1 to 5,game is over!"
                break    //跳出循环体
                ;;
        esac
done

8.查看当前路径.html文件大小

#!/bin/bash
for size in $(ls -l *.html | awk '{print 5}')
do
        sum=$(($sum+$size))     
done
echo $sum

9.运算

#!/bin/bash
        fun () {
        echo "输入两个数字进行运算"
        echo "请输入第一个数字"
        read aNum
        echo "请输入第二个数字"
        read anotherNum
        echo "两个数字分别为 $aNum$anotherNum"
        return $(($aNum+$anotherNum))
        }
        fun
        echo "您输入的两个数字之和为 $? "

10.运算

#!/bin/bash
funcation () {
funcation=1
for ((i=1;i<=5;i++))
do
        funcation=$[$funcation*$i]
done
        echo "1*1*2*3*4*5"是: $funcation
}
funcation

11.判断网络与yum源

#!/bin/bash
check_net(){
        echo "正在检测网络"
        ping -c1 www.baidu.com &>/dev/null
        if [ $? -eq 0 ];then
                echo "您的网络没有问题"
        else
                echo "您的网络有问题"
                exit
fi
}
check_net
echo "++++++++++++++++++++++++++++++"
check_yum(){
        echo "正在检测yum源"
        yum repolist &>/dev/null
                if [ $? -eq 0 ];then
                echo "您的源可以正常使用"
        else
                echo "您的源不能用,请手动配置"
        exit 3
fi
}
check_yum

12.2*所输入的数

#!/bin/bash
        double(){
        read -p "please input a num: " num
        return $[2*$num]
}
double
echo "double num is: $?"

13.判断用户输入的是否是数字

#!/bin/bash
read -p "请输入一个数值: " num
if [[ ! "$num" =~ ^[0-9]+$ ]];then                  两个[ ]支持正则表达式
        echo "你输入的不是数字,程序退出"
        exit
fi
echo ccc

14.创建随机文件名的文件

#!/bin/bash
 
WORK_DIR=/oldboy/
 
create(){
 
    i=1
    while (($i<11))
    do
        cd $WORK_DIR && touch `tr -dc "a-z"</dev/urandom |head -c 10`_oldboy.html
        i=$(($i+1))
    done
}
 
check(){
    if [ -d $WORK_DIR ];
    then
        create
    else
        mkdir $WORK_DIR
        create
    fi
}
 
check

15.创建用户并设置密码

#!/bin/bash
 
USER=oldboy
create_user(){
 
    for i in {01..10}
    do
         RPASSWD=$(tr -dc [:alpha:] < /dev/urandom |head -c 8)
         useradd $USER$i
         echo $RPASSWD|passwd $USER$i --stdin
         echo $USER$i----$RPASSWD >> /oldboy/userpasswd.txt
    done
}
 
del_user(){
 
    for j in {01..10}
    do
        userdel $USER$j
        rm -rf /home/$USER$j
    done
}
 
case $1 in
    create)
        create_user
    ;;
    del)
        del_user
    ;;
    *)
        echo "Usage:Please use $0 create or $0 del."
        echo "####################################"
        echo "create: create user $USER 01-10 and give it random passwd."
        echo "del: delete $USER 01-10 and /home/$USER 01-10 directory. "
    ;;
    esac

16.for循环打印下面这句话中字母数不大于6的单词

I am oldboy teacher welcome to oldboy training class.
#!/bin/bash

echo "=======开始======="
a='I am oldboy teacher welcome to oldboy training class'
for i in $a
do
        num=`echo $i | wc -L`
        if [ $num -le 6 ];then
        echo $i
        fi
done

17.免密登录

#!/bin/bash
passwd='1'
/usr/bin/expect <<-EOF
set time 30                     设置超时时间
spawn ssh liu@192.168.157.160 df -Th
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect eof
EOF

18.免密登录

#!/usr/bin/expect
        spawn ssh-keygen
        expect {
                ".ssh/id_rsa):" { send "\r" ; exp_continue}
                "Overwrite (y/n)?" { send "y\r" ; exp_continue}
                "no passphrase):" { send "\r" ; exp_continue}
                "again:" { send "\r" };
}
interact
        spawn ssh-copy-id -i 192.168.157.160
        expect {
                "(yes/no)?"  { send "yes\r"; exp_continue }
                "password:" { send "redhat\r" };
}
interact

19.检测cpu是否正常

#!/bin/bash
 DATE=$(date +%F" "%H:%M)
 IP=$(ifconfig |grep broadcast |awk '{print $2}')
 if !which vmstat &>/dev/null;then
  echo "vmstst command no found.Please install procps package"
  exit 1
 fi
 US=$(vmstat |awk NR==3'{print $13}')
 SY=$(vmstat |awk NR==3'{print $14}')
 IDLE=$(vmstat |awk NR==3'{print $15}')
 WAIT=$(vmstat |awk NR==3'{print $16}')
 USE=$(($US+$SY))
 if [ $USE -ne 1 ];then
  echo "
  Date: $DATE
  Host: $IP
  Problem: CPU utilization $USE "
 fi

20.判断网站是否存活

#!/usr/bin/bash
 URLLIST=$(egrep "com|cn" ./url.txt)   ./ 当前目录
 for url in ${URLLIST}
 do
    statuCode=$(curl -I --connect-timeout 3 -m 10 -s "${url}" | grep "HTTP")
    if [[ ${statuCode: 9: 3} -eq 200 ]] || [[ ${statuCode: 9: 3} -eq 302 ]];then
      echo "$(date +'%Y-%m-%d %H:%M:%S') - run monitor program ${url} is ok" >>/var/log/urlMonitor.log
    else
      echo "$(date +'%Y-%m-%d %H:%M:%S') - run monitor program ${url} is failed" >>/var/log/urlerrorMonitor.log
      echo "[ERROR] ${url} Downtime! Please repair." 
    fi
 done

21.判断网站是否存活

#!/bin/bash
# 将网站域名加入变量
website=(
        www.baidu.com
        www.qq.com
        www.hangege.cn
)
for url in ${website[@]}
do
    code=$(curl -L -I -m 5 -o /dev/null -s -w %{http_code}  $url)
    if [ $code -eq 200 ];then
        echo "$(date +'%Y-%m-%d %H:%M:%S') - run monitor program ${url} is ok"
    else
        echo "$(date +'%Y-%m-%d %H:%M:%S') - run monitor program ${url} is failed"
    fi
done

22.判断当前内核主版本是否为3,且次版本是否大于10

#! /bin/bash
a1=`uname -r | awk -F'.' '{print $1}'`
a2=`uname -r | awk -F'.' '{print $2}'`
if [ $a1 -eq 3 ];then
        echo "当前内核主版本为3"
else
        echo "当前内核主版本不为3,为$a1"
fi
if [ $a2 -ge 10 ];then
        echo "当前次版本大于10,为$a2"
else
        echo "当前次版本小于10,为$a2"
fi

23.判断httpd是否运行

#! /bin/bash
ps -axu| grep httpd &>/dev/null
        if [ $? -eq 0 ];then
                echo "http正在运行"
        else
                echo "httpd没有运行"
read -p "请问需要运行吗Y|N:"  num
case $num in
Y|y)
systemctl start httpd
if [ $? -eq 0 ];then
                echo "启动完毕"
else
                echo "请手动检查是否安装httpd"
fi
;;
N|n)
        echo "正在退出"
        exit 0
;;
esac
        fi

24.判断指定的主机是否能ping通,必须使用$1变量

#!/bin/bash
read -p "请输入所要测试的主机:" ip
ping -w 1 $ip &>/dev/null
if [ $? -eq 0 ];then
        echo "$ip ok"
else
        echo "$ip no"
fi

25.判断: 如果vsftpd启动,输出以下信息:
vsftpd服务器已启动…
vsftpd监听的地址是:
vsftpd监听的端口是:
vsftpd的进程PID是:

#! /bin/bash
echo "正在检测vsftpd"
while :
do
ss -tnlp | grep vsftpd &>/dev/null
if [ $? -eq 0 ];then
        echo "vsftpd 存活"
   else
        echo "vsftpd 正在启动"
fi
systemctl start vsftpd
dk=`ss -tnlp|grep vsftp|awk '{print $4}'|awk -F':' '{print $4}'`
pid=`ps -axu | grep [v]sftpd|awk '{print $2}'`
ps -axu | grep [v]sftpd &>/dev/null
                echo "ftp已启动"
                echo "监听的地址:"
                echo "ftp监听的端口:$dk"
                echo "ftp进程PID:$pid"
        break
done

  1. 使用case实现成绩优良差的判断
#! /bin/bash
read -p "请输入您的成绩:" num
case $num in
[0-9]|[1-2][0-9])
        echo "差"
;;
[3-6][0-9])
        echo "中"
;;
[7-9][0-9]|100)
        echo "优"
;;
esac

27.for创建20用户
用户前缀由用户输入
用户初始密码由用户输入
例如:test01,test10

#! /bin/bash
for i in {01..20}
do

read -p "请输入用户名:" name
read -p "请输入密码:" password
useradd $name$i -p $password
let i++
done

28.for ping测试指定网段的主机
网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 — 192.168.2.20
UP: /tmp/host_up.txt
Down: /tmp/host_down.txt

#! /bin/bash
read -p "请输入ip网段:" num
for i in {1..255}
do
let i++
ping -w 1 $num.$i &>/dev/null
if [ $? -eq 0 ];then
        echo "$num.$i Up"
        echo "$num.$i Up" >>/tmp/host_up.txt
else
        echo "$num.$i Down"
        echo "$num.$i Down" >>/tmp/host_down.txt
fi
done
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值