yuanxiaojiang
人的放纵是本能,自律才是修行

案例01:书写hello word脚本并在用户登陆时自动运行

[root@m01 /server/scripts/devops-shell]# cat 01.hello.sh
#!/bin/bash
echo "Hello world!"
[root@m01 ~]# echo ". /server/scripts/devops-shell/01.hello.sh" >>/etc/profile 

案例02:备份/var/log/下面所有内容到/backup/

[root@m01 /server/scripts/devops-shell]# cat 02.backup.sh 
#!/bin/bash
#1.vars
time=`date +%F`
filename=log-${time}.tar.gz
dir="/backup"
if [ ! -d ${dir} ];then
  mkdir ${dir}
fi
tar zcf ${dir}/${filename} /var/log

# 备份任意多的目录、文件
# sh 02.backup.sh /etc/ /var/log/ /yuan/a.txt
# tar zcf ${dir}/${filename} $@

 案例03:一键部署LNMP的RPM包

[root@m01 /server/scripts/devops-shell]# cat 03.lnmp-rpm.sh 
#!/bin/bash
#1.var
rpmdir="/server/tools/lnmp"
#!/bin/bash  

# 1. 定义变量  
# Nginx, PHP, MariaDB  
rpmdir=/server/tools/lnmp/  

# 2. 安装本地软件包  
if [ -d "$rpmdir" ] && ls "$rpmdir"/*.rpm > /dev/null 2>&1; then  
    echo "正在从本地路径安装软件包..."  
    yum localinstall -y "$rpmdir"/*.rpm  
else  
    echo "本地目录没有找到 RPM 包,使用 yum 安装..."  

    # 3. 安装 Nginx  
    echo "安装 Nginx..."  
    yum install -y nginx  
    
    # 4. 安装 PHP  
    echo "安装 PHP..."  
    yum install -y php php-fpm # 替换为您所需的 PHP 包  

    # 5. 安装 MariaDB  
    echo "安装 MariaDB..."  
    yum install -y mariadb  
    echo "安装完成!"  
fi 

案例04:使用sshpass工具自动交互密码远程其他主机安装httpd软件

[root@m01 /server/scripts/devops-shell]# cat 04.sshpass.sh 
#!/bin/bash
#1.vars
ips="10.0.0.31 10.0.0.41"
user=root
# 如果sshpass命令不存在则下载
if ! command -v sshpass &>/dev/null;then
  echo "sshpass命令不存在,自动安装该命令"
  yum install -y sshpass &>/dev/null
  echo "该语句已被执行"
fi

# 如果密钥对不存在则自动创建密钥
[ ! -f /root/.ssh/id_rsa.pub ] && [ `ssh-keygen -t rsa -f /root/.ssh/id_rsa -P '' &>/dev/null` ]
# 自动化分发公钥
for ip in $ips
do
  sshpass -p 'root' ssh-copy-id -i /root/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@${ip}
done
# 连接并安装httppd
sshpass -p 'root' ssh root@10.0.0.41 "yum install -y httpd"

 

案例05:查看有多少远程IP连接本机

# 检查当前有多少人远程连接这个主机的22端口
[root@m01 ~]# ss -ant |grep -i ESTAB |awk '$4~/:22$/'
ESTAB      0      36     10.0.0.61:22                 10.0.0.1:51186              
ESTAB      0      0      10.0.0.61:22                 10.0.0.1:48715          
[root@m01 ~]# ss -ant |grep -i ESTAB |awk '$4~/:22$/' |wc -l
2

# 有多少ip连接本地的任意端口    
[root@m01 ~]# ss -ant |grep -i ESTAB |wc -l
2
[root@m01 ~]# ss -ant |grep -ic ESTAB
2

 

案例06:统计当前linux系统中可以登录计算机的账号有多少个

# 检查 /etc/passwd 文件:命令解释器为/bin/bash /bin/sh
# 检查 /etc/shadow 文件:确认用户的密码字段不是 * 或!
[root@m01 /server/scripts/devops-shell]# cat 06.login_user.sh
#!/bin/bash
check_login_etc_passwd() {  
    name_list=$(grep '/bin/bash' /etc/passwd | awk -F: '{print $1}')  
}  

check_login_etc_shadow() {  
    i=0  
    for name in $name_list; do  
        login=$(grep -w "${name}" /etc/shadow | awk -F: '{ if ($2 !~ /[*!]/) print 0; else print 1 }')  
        if [ "$login" -eq 0 ]; then  
            echo "$name 用户可以登录"  
            ((i++))  
        fi  
    done  
    echo "可以远程登录系统的用户数量是: $i"  
}  

# main  
main() {  
    check_login_etc_passwd  
    check_login_etc_shadow  
}  

main

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2025-04-09 12:59  猿小姜  阅读(15)  评论(0)    收藏  举报

levels of contents