[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、用二个以上的数字为参数,显示其中的最大值和最小值
- 编写函数,实现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
- 编写函数,实现取出当前系统eth0的IP地址
- 编写函数,实现打印绿色OK和红色FAILED
- 编写函数,实现判断是否无位置参数,如无参数,提示错误
- 编写函数,实现两个数字做为参数,返回最大值
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