shell 脚本

[root@openvpn-server n80]# cat continue_for.sh 
#!/bin/bash
#
#**********************************
#Autoor:        luohuiwen
#QQ:            2368756722
#Data:          2023-07-24
for ((i=0;i<10;i++));do
    for ((j=0;j<10;j++));do
        [ $j -eq 5 ]  && break 2
        echo $j
    done
done

continue 跳出本次循环
break 跳槽整个循环
1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记
录于日志/var/log/login.log中,并退出脚本
2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出

[root@openvpn-server n80]# vi random.sh 

#!/bin/bash
# 
#**********************************
#Autoor:        luohuiwen
#QQ:            2368756722
#Data:          2023-07-24
#!/bin/bash

#生成一个10以内的随机数
target=$((RANDOM % 10))

while true; do
    read -p "请猜一个10以内的整数:" guess

    # 检查猜测的数字与目标数字的关系
    if ((guess < target)); then
        echo "您猜的数字太小了!"
    elif ((guess > target)); then
        echo "您猜的数字太大了!"
    else
        echo "恭喜!您猜对了!"
        break
    fi
done

3、用文件名做为参数,统计所有参数文件的总行数
4、用二个以上的数字为参数,显示其中的最大值和最小值

  1. 编写函数,实现OS的版本判断
[root@openvpn-server sh]# cat funcions 
os_type () {

    if grep -i -q centos /etc/os-release ;then
        echo centos 
    elif grep -i -q  ubuntu /etc/os-release ;then
        echo ubuntu
    else 
        echo "other OS "
    fi

}
os_type

[root@openvpn-server sh]# cat install.httpd.sh 
#!/bin/bash
#
#**********************************
#Autoor:        luohuiwen
#QQ:            2368756722
#Data:          2023-07-24
. ./funcions
if [ `os_type` = 'ubuntu' ]; then
    apt  install apache3 -y
elif  [ `os_type` = 'centos' ]; then
    yum install httpd -y
else
    echo  other 


fi




  1. 编写函数,实现取出当前系统eth0的IP地址
  2. 编写函数,实现打印绿色OK和红色FAILED
  3. 编写函数,实现判断是否无位置参数,如无参数,提示错误
  4. 编写函数,实现两个数字做为参数,返回最大值
find_max() {
    if [ $1 -gt $2  ] ;then
        echo $1
    else 
        echo $2
    fi
}
find_max 999 000
root@server01:~# df |sed -nr '/^\/de/ s#^([^ ]+).* ([0-9]+)%.*#\1 \2#p#'
/dev/vda3 46
/dev/vda2 4
^ 表示匹配行的开始位置。
([^ ]+) 是一个捕获组,用于匹配连续不含空格的字符。
[^ ] 是一个否定字符类,表示不匹配空格。

while read 逐行处理

[root@openvpn-server sh]# cat df_.sh 
#!/bin/bash
#
#**********************************
#Autoor:        luohuiwen
#QQ:            2368756722
#Data:          2023-07-24
while true;do

    df |sed -nr '/^\/de/ s#^([^ ]+).*([0-9]+)%.*#\2 \1#p#' |while read use dev ;do
        [ $use -gt 5 ] && echo "$dev will be full,use: $use " |mail -s "disk warning"  2368756722@qq.com
    done
    sleep 10  
    

done

linux炸弹命令
😦){ 😐:& };:

忽略信号
trap ‘’ 信号

expect远程登录

#ubuntu测试成功
[root@openvpn-server sh]# cat expect2
#!/usr/bin/expect
set ip 101.201.116.250
set user root
set password 123456
set timeout 10
spawn ssh $user@$ip
expect {
       "yes/no" { send "yes\n";exp_continue } 
       "password" { send "$password\n" }   #
}
interact  ## 期望等待命令执行完成

方法2 ubuntu也适用

root@server02:~/sh# cat expect.sh 
#!/bin/sh
export LC_CTYPE="en_US.UTF-8"
expect -c "
spawn ssh root@120.77.146.92 -p 22
set timeout 3   #设置超时
expect  \"root@120.77.146.92's password:\"
set password \"2Aa@\"
send \"\$password\r\"
interact
"

位置参数

[root@openvpn-server sh]# cat expect3
#!/usr/bin/expect
set ip [lindex $argv 0] 
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $user@$ip
expect {
       "yes/no" { send "yes\n";exp_continue }   #上面包含yes/no ,发送yes并换行
       "password" { send "$password\n" }
}
interact

自动登录并创建sb用户

cat expect.sh 
#!/bin/bash
NET=101.201.116
user=root
password=123456
for ID in 250;do
ip=$NET.$ID
expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
	"yes/no" { send "yes\n";exp_continue }
	"password" { send "$password\n" }
}
expect "#" { send "useradd sb\n" }       # 出现#时代表登录成功的提示符,创建用户指令
expect "#" { send "exit\n" }
expect eof
EOF
done

seq -f"%03g" 1 20
-f"%02g" 选项指定了生成的数字序列的格式为两位数,不足两位的数字将用零进行填充
g 是格式化字符串中的一个标识符,用于指示实际数字的格式化方式。在这种情况下,%04g 表示对数字进行格式化,保留四位数,并在不足四位数的情况下在前面补零。

统计监听状态数量, state[$1] 统计第一1列
ss -ant |awk ‘NR>2 {state[$1]++}END{for (i in state ){print state[i],i}}’
NR>2 是一个条件,表示只处理行号大于2的行(跳过前两行标题)。
{state[$1]++} 用于统计每个连接状态的数量,通过数组 state 存储。
END{for (i in state ){print state[i],i}} 在处理完成后执行,遍历数组 state 打印每个连接状态的数量和状态名称
i代表状态,state[i]代表状态的计数
END 是一个模式,表示对整个输入完成处理后执行的操作。它会在输入处理完成后执行一次,通常用于输出最终的结果或进行收尾处理。
for 遍历数组

统计ip访问量,
awk ‘{ip[$1]++}END{for (i in ip )print ip[i],i}’ access.log|sort -k1 -nr|head

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值