案例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
浙公网安备 33010602011771号