shell脚本练习

示例1:对新安装的linux系统初始化,要求创建用户、修改内核参数(最大文件打开数)、增加系统启动自动加载项(自动启动ssh 222端口);并对以上进行校验检查。

#!/usr/bin/bash
#Author:teng
#Blog:https://blog.youkuaiyun.com/weixin_45961525
#Time:2021-01-27 17:18:54
#Name:start.sh
#Version:V1.0
#Description:This is a test script.

#对新安装的linux系统初始化,要求创建用户、修改内核参数(最大文件打开数)、增加系统启动自动加载项(自动启动ssh 222端口);并对以上进行校验检查。

echo "-------------系统初始化中-------------"

for i in `seq 3`
do
    useradd sys$i
    if [ $? -eq 0 ];then
        echo "sys$i创建成功"
    fi
done

#系统最大打开文件描述符数:/proc/sys/fs/file-max  内核可分配的最大文件句柄数
#单个进程可分配的最大文件数:/proc/sys/fs/nr_open  单个进程可分配的最大文件句柄数
#参数大小关系: soft limit < hard limit < nr_open < file-max

cat /etc/sysctl.conf |grep -o fs.file-max &> /dev/null
A=`echo $?`
cat /etc/sysctl.conf |grep -o fs.nr_open &> /dev/null
B=`echo $?`
if [ $A == 0 -a $B == 0 ];then
    echo "内核参数已修改"
else
    echo "fs.nr_open=1048576" >> /etc/sysctl.conf
    echo "fs.file-max=95345" >> /etc/sysctl.conf
    sysctl -p &> /dev/null
    echo "内核参数已生效"
fi
cat /etc/ssh/sshd_config |grep -o -i "port=222" &> /dev/null
C=`echo $?`
if [ $C == 0 ];then
    echo "ssh222端口已经添加过了"
    systemctl enable sshd
    echo "已成功加入开机自启"
else
    echo "Port=222" >> /etc/ssh/sshd_config
    echo "ssh222端口已添加"
    echo "------正在重新启动SSH服务-------"
    systemctl restart sshd
    sleep 2
    echo "------ssh服务启动完成-------"
    systemctl enable sshd
    echo "已成功加入开机自启"
fi
    echo  "------------系统初始化完成-------------"

示例2:linux操作系统的多台服务器,可以通过shell脚本进行批量部署防火墙策略。
创建hosts文件里面加入IP地址

#!/usr/bin/bash
#Author:teng
#Blog:https://blog.youkuaiyun.com/weixin_45961525
#Time:2020-12-27 15:36:15
#Name:expect_test.sh
#Version:V1.0
#Description:This is a test script.

#执行检测并安装expect模块
expect=`rpm -qa |grep expect`
if [ -z $expect ];then
    echo "检测到你未安装expect模块,现在进行安装。。。"
    sleep 1
    yum install expect -y
else
    echo "您已安装expect模块,接下来进行公钥分发"
    sleep 1
fi

cat hosts | while read host
do
    echo "向$host上传输ssh文件"

    /usr/bin/expect <<-EOF
    spawn scp -r /root/.ssh/ $host:/root
    expect {
        "*yes/no" { send "yes\r"; exp_continue }
        "*password" { send "111111\r"; exp_continue }
    }
    expect eof
EOF
    echo "传输完成"

    echo "--------$host主机正在进行公钥认证-------"
    sleep 1
    /usr/bin/expect <<EOF
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $host
    expect {
        "*yes/no" { send "yes\r"; exp_continue }
        "*password:" { send "111111\r"; exp_continue }
    }
EOF
echo "公钥认证完成!!"
done

echo "接下来进行防火墙的规则分发"
cat hosts | while read ip
do
    /usr/bin/expect <<EOF
    spawn ssh root@$ip

    expect {
        "*yes/no" { send "yes\r"; exp_continue }
        "*password:" { send "111111\r"; exp_continue }
    }
    expect "*]#"
    send "iptables -F\r"
    expect "*]#"
    send "iptables -t filter -I INPUT -m iprange --src-range 192.168.79.100-192.168.79.175 -j DROP\r"
    expect "*]#"
    send "date\r "
    expect "*]#"
    send "exit\r"
    expect eof
EOF
done
echo "防火墙规则配置完成"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bingo_大侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值